From 095d5c79a63c51d971b5a3a6a73cfd47bbdb0a11 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 10:33:07 +0300 Subject: [PATCH 0001/1179] Create editor.md --- src/tools/editor.md | 127 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 src/tools/editor.md diff --git a/src/tools/editor.md b/src/tools/editor.md new file mode 100644 index 00000000000..e32d40a1405 --- /dev/null +++ b/src/tools/editor.md @@ -0,0 +1,127 @@ +# Text Editor +Here you can use the basic editor features to write codes more conveniently. + + + + +
+

Words: 0 | + Spaces: 0 | + Lines: 0 | + Characters: 0 +

+ +
+ +
+ +
+ +
+

+

[: 0 | ]: 0

+

+ + From a8d09ebcb4654f894d5ff6b9c97e096d7c9d11ff Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 10:34:33 +0300 Subject: [PATCH 0002/1179] Update SUMMARY.md --- src/SUMMARY.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 500d2659100..83f81210dca 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -42,6 +42,9 @@ - [Share Code](./guides/other/sharecode.md) - [Common BDFD Errors](./guides/other/commonErrors.md) +- [Tools]() + - [Editor](./tools/editor.md) + - [Resources]() - [Introduction](./resources/introduction.md) - [BDFD API](./resources/api.md) From 7702379a518a9f312eb170b355db23b689cfb925 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 10:48:04 +0300 Subject: [PATCH 0003/1179] Update editor.md --- src/tools/editor.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index e32d40a1405..6e723197d70 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,6 +1,9 @@ # Text Editor Here you can use the basic editor features to write codes more conveniently. + + + - - -
-

Words: 0 | + margin-bottom: 10px; + } + + input { + width: 100%; + margin-bottom: 10px; + } + + .highlight { + background-color: yellow; + } + + #highlightedText { + white-space: pre-wrap; + word-break: break-word; + } + + #error-message { + color: red; + } + + #stats-container { + position: fixed; + top: 0; + left: 0; + background-color: white; + padding: 10px; + border-bottom: 1px solid #ccc; + z-index: 100; + } + + body { + padding-top: 60px; + } + + +

+

Words: 0 | Spaces: 0 | Lines: 0 | Characters: 0 -

- -
- -
- -
- -
-

-

[: 0 | ]: 0

-

- - - + } + From ab949be1a908179c9e51006bac6205a55c9e741c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 11:21:18 +0300 Subject: [PATCH 0006/1179] Update chrome.css --- src/theme/css/chrome.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 6fb392253f0..3032cbdd10a 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -751,6 +751,7 @@ ul#searchresults span.teaser em { .sidebar-hidden .page-wrapper { transform: translateX(320px); + width: calc(100% - 320px); } } @@ -1008,3 +1009,4 @@ ul#searchresults span.teaser em { -webkit-animation-iteration-count: infinite; -webkit-animation-timing-function: ease-in; } + From 41aaee1fb395145ad18f570e8b039a8338f6a9e5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 11:24:00 +0300 Subject: [PATCH 0007/1179] Update editor.md --- src/tools/editor.md | 63 --------------------------------------------- 1 file changed, 63 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 0e7467bfed9..2ddaeec0481 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -59,66 +59,3 @@ Here you can use the basic editor features to write codes more conveniently.

[: 0 | ]: 0

- - From f380d0f58e7e46ed6ab9e190b3f81aa60367d85a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 11:26:07 +0300 Subject: [PATCH 0008/1179] Update playground.js --- src/theme/playground.js | 62 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 65d13525da8..2f84d3021d1 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -179,3 +179,65 @@ function editInputHeight() { playInputt.style.width = "fit-content"; } } + +// Editor tools +function updateStats() { + const text = document.getElementById("editor").value; + const words = text.trim().split(/\s+/).filter(word => word !== ""); + const wordCount = words.length; + let spaceCount = 0; + for (let i = 0; i < text.length; i++) { if (text[i] === ' ') { spaceCount++; } } + const lineCount = text.split('\n').length; + const charCount = text.length; + + document.getElementById("wordCount").textContent = wordCount; + document.getElementById("spaceCount").textContent = spaceCount; + document.getElementById("lineCount").textContent = lineCount; + document.getElementById("charCount").textContent = charCount; +} + +function replaceText() { + const searchText = document.getElementById("searchText").value; + const replaceText = document.getElementById("replaceText").value; + const editor = document.getElementById("editor"); + editor.value = editor.value.replaceAll(searchText, replaceText); + updateStats(); + checkBrackets(); +} + +function checkBrackets() { + const text = document.getElementById("editor").value; + let openBrackets = 0; + let closeBrackets = 0; + + for (let i = 0; i < text.length; i++) { + if (text[i] === '[') { openBrackets++; } + else if (text[i] === ']') { closeBrackets++; } + } + + document.getElementById("openCount").textContent = openBrackets; + document.getElementById("closeCount").textContent = closeBrackets; + const errorMessageElement = document.getElementById("error-message"); + + if (openBrackets > closeBrackets) { errorMessageElement.textContent = "Error: Brackets are closed."; } + else if (openBrackets < closeBrackets) { errorMessageElement.textContent = "Error: empty"; } + else { errorMessageElement.textContent = ""; } +} + +function toggleHighlight() { + const button = document.getElementById("highlightButton"); + const highlightedTextDiv = document.getElementById("highlightedText"); + const text = document.getElementById("editor").value; + const searchText = document.getElementById("searchText").value; + let highlighted = text; + if (button.textContent === "Highlighting found") { + if (searchText) { + highlighted = highlighted.replaceAll(searchText, `${searchText}`); + } + highlightedTextDiv.innerHTML = highlighted; + button.textContent = "Hide"; + } else { + highlightedTextDiv.innerHTML = ""; + button.textContent = "Highlighting found"; + } +} From 50104bf580b08ca7c7b4eda0da335b9709af5491 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 11:29:06 +0300 Subject: [PATCH 0009/1179] Update editor.md --- src/tools/editor.md | 41 ----------------------------------------- 1 file changed, 41 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 2ddaeec0481..e280adea8d7 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,46 +1,5 @@ # Text Editor Here you can use the basic editor features to write codes more conveniently. - -

Words: 0 | From b9427e4b5bf6c3153eba4e068a7ccadd2089b84b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 11:43:35 +0300 Subject: [PATCH 0010/1179] Update editor.md --- src/tools/editor.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index e280adea8d7..03db2b8d94b 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -2,10 +2,10 @@ Here you can use the basic editor features to write codes more conveniently.

-

Words: 0 | - Spaces: 0 | - Lines: 0 | - Characters: 0 +

Words: 0

+

Spaces: 0

+

Lines: 0

+

Characters: 0


From 3789e9ec83fcb769f5489d3bc612a3f310873d86 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 11:58:41 +0300 Subject: [PATCH 0011/1179] Update chrome.css --- src/theme/css/chrome.css | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 3032cbdd10a..21f48d62705 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1010,3 +1010,28 @@ ul#searchresults span.teaser em { -webkit-animation-timing-function: ease-in; } +/* Tools Editor */ +#stats-container p { + transition: .3s; + display: inline-block; + margin-right: 5px; + background-color: var(--color3); + padding: 5px; + font-size: 1.5rem; + border-radius: 10px; +} + +#stats-container span { + font-weight: bold; +} + +#stats-container p:hover { + transition: .3s; + border-radius: 12px; + font-size: 1.7rem; +} + +#stats-container { + margin-top: -2.5%; + white-space: nowrap; +} From 6a561e2f8319bf36724f5cd34dea71cb6747355b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 12:02:10 +0300 Subject: [PATCH 0012/1179] Update chrome.css --- src/theme/css/chrome.css | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 21f48d62705..6266d2dfe9a 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1035,3 +1035,21 @@ ul#searchresults span.teaser em { margin-top: -2.5%; white-space: nowrap; } + +#editor { + width: 96%; + height: 40rem; + font-size: 1.5rem; + min-height: 1.3rem; + max-height: 100em; + border-radius: 10px; + border-width: 0; + color: #bbb; + background: hsl(0deg 0% 100% / 7%); + padding: 7px; + font-size: 1.5rem; + resize: vertical; + margin: 0 auto; + display: block; + outline: none; +} From 52e47553bc6670fc62494e18fa8a49c3a5c167e5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 12:19:19 +0300 Subject: [PATCH 0013/1179] Update chrome.css --- src/theme/css/chrome.css | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 6266d2dfe9a..be9e556e490 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1033,7 +1033,11 @@ ul#searchresults span.teaser em { #stats-container { margin-top: -2.5%; - white-space: nowrap; + white-space: nowrap; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; } #editor { @@ -1053,3 +1057,4 @@ ul#searchresults span.teaser em { display: block; outline: none; } + From 56aebce8e2a09e9131cef623a9c3803e73d6b62b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 12:19:49 +0300 Subject: [PATCH 0014/1179] Update editor.md --- src/tools/editor.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 03db2b8d94b..73f248e2d76 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -7,7 +7,7 @@ Here you can use the basic editor features to write codes more conveniently.

Lines: 0

Characters: 0

- +



@@ -15,6 +15,5 @@ Here you can use the basic editor features to write codes more conveniently.

-

[: 0 | ]: 0

From b69c2a7707d5b0e5ca870edb231e1915631f17d2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 12:29:22 +0300 Subject: [PATCH 0015/1179] Update editor.md --- src/tools/editor.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 73f248e2d76..30075bbbe74 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -9,11 +9,14 @@ Here you can use the basic editor features to write codes more conveniently.


- -
- -
- -
+
+ +
+ +
+ +
+
+

[: 0 | ]: 0

From 3c00fbf1ffc92eff4aa035ddc3adcacb937ac465 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 12:37:24 +0300 Subject: [PATCH 0016/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 30075bbbe74..a7ddf289272 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -9,7 +9,7 @@ Here you can use the basic editor features to write codes more conveniently.


-
+

From 1407af43742c018a98e0963ea74bd457f766b5d0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 12:56:18 +0300 Subject: [PATCH 0017/1179] Update chrome.css --- src/theme/css/chrome.css | 59 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index be9e556e490..051360d830d 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1012,13 +1012,14 @@ ul#searchresults span.teaser em { /* Tools Editor */ #stats-container p { - transition: .3s; + transition: .4s; display: inline-block; - margin-right: 5px; + margin-right: 7.5px; background-color: var(--color3); padding: 5px; font-size: 1.5rem; border-radius: 10px; + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); } #stats-container span { @@ -1026,9 +1027,10 @@ ul#searchresults span.teaser em { } #stats-container p:hover { - transition: .3s; - border-radius: 12px; - font-size: 1.7rem; + transform: scale(1.1); + border-radius: 8px; + border-width: 1px; + transition: .4s; } #stats-container { @@ -1053,8 +1055,53 @@ ul#searchresults span.teaser em { padding: 7px; font-size: 1.5rem; resize: vertical; - margin: 0 auto; + margin: -2rem auto; display: block; outline: none; } + +#text-editorui { + margin-top: 1rem; + background-color: var(--color3); + padding: 6px; + border-radius: 10px; +} + +#searchText, #replaceText { + background: hsl(0deg 0% 100% / 7%); + color: #bbb; + font-size: 1.5rem; + display: block; + outline: none; + border-radius: 5px; + border-width: 0; + width: 99%; + height: 3rem; +} + +#text-editorui button { + touch-action: manipulation; + -webkit-user-select: none; + user-select: none; + padding-left: 1rem; + padding-right: 1rem; + height: 4rem; + border: none; + border-radius: 10px; + cursor: pointer; + font-size: 1.5rem; + margin: 0.25%; + color: #fff; + background: hsl(0deg 0% 100% / 7%); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); + transition: 0.2s; +} + +#text-editorui button:hover { + transform: scale(1.05); + border-radius: 8px; + border-width: 1px; + transition: 0.4s; +} + From 078af12118d7ce3ae359df3af6ac423c6e056ba6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 13:02:17 +0300 Subject: [PATCH 0018/1179] Update chrome.css --- src/theme/css/chrome.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 051360d830d..a2b1208f64f 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1035,7 +1035,6 @@ ul#searchresults span.teaser em { #stats-container { margin-top: -2.5%; - white-space: nowrap; display: flex; flex-direction: row; justify-content: center; @@ -1064,7 +1063,7 @@ ul#searchresults span.teaser em { #text-editorui { margin-top: 1rem; background-color: var(--color3); - padding: 6px; + padding: 10px; border-radius: 10px; } @@ -1074,7 +1073,7 @@ ul#searchresults span.teaser em { font-size: 1.5rem; display: block; outline: none; - border-radius: 5px; + border-radius: 10px; border-width: 0; width: 99%; height: 3rem; @@ -1105,3 +1104,4 @@ ul#searchresults span.teaser em { transition: 0.4s; } + From e007e8a6a87f6878ee5aeaaf106bd44f05f72156 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 13:16:20 +0300 Subject: [PATCH 0019/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index a7ddf289272..5943b79c5f5 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -18,5 +18,5 @@ Here you can use the basic editor features to write codes more conveniently.
-

[: 0 | ]: 0

+

[: 0 | ]: 0

From ef71231d432b2ae4a26869b4044d00af526b7bff Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 13:33:11 +0300 Subject: [PATCH 0020/1179] Update playground.js --- src/theme/playground.js | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 2f84d3021d1..f7a6cda9a79 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -209,19 +209,37 @@ function checkBrackets() { const text = document.getElementById("editor").value; let openBrackets = 0; let closeBrackets = 0; + let i = 0; - for (let i = 0; i < text.length; i++) { - if (text[i] === '[') { openBrackets++; } - else if (text[i] === ']') { closeBrackets++; } + while (i < text.length) { + if (text[i] === '[') { + openBrackets++; + i++; + } else if (text[i] === ']' && (i === 0 || text[i - 1] !== '\\')) { + closeBrackets++; + i++; + } else { + i++; + } } document.getElementById("openCount").textContent = openBrackets; document.getElementById("closeCount").textContent = closeBrackets; + const errorMessageElement = document.getElementById("error-message"); - if (openBrackets > closeBrackets) { errorMessageElement.textContent = "Error: Brackets are closed."; } - else if (openBrackets < closeBrackets) { errorMessageElement.textContent = "Error: empty"; } - else { errorMessageElement.textContent = ""; } + if (errorMessageElement) { + if (openBrackets > closeBrackets) { + errorMessageElement.textContent = "Error: Brackets are not closed.."; + errorMessageElement.style.color = "red"; + } else if (openBrackets < closeBrackets) { + errorMessageElement.textContent = "Warning: Different amounts of [ and ] are used"; + errorMessageElement.style.color = "orange"; + } else { + errorMessageElement.textContent = ""; + errorMessageElement.style.color = "black"; + } + } } function toggleHighlight() { @@ -241,3 +259,4 @@ function toggleHighlight() { button.textContent = "Highlighting found"; } } + From 7c3bcc7b56652366ab38306833b9f55178f2d17d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 13:54:38 +0300 Subject: [PATCH 0021/1179] Update chrome.css --- src/theme/css/chrome.css | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index a2b1208f64f..7b550ab8b46 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1104,4 +1104,27 @@ ul#searchresults span.teaser em { transition: 0.4s; } +#error-message { + margin-top: -1rem; + margin-bottom: 3rem; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} + +#highlightedText span { + color: var(--color1); +} + +#highlightedText { + color: #bbb; + font-size: 1.5rem; + border-radius: 10px; + border-width: 0; + width: 100%; + padding: 10px; + height: 100%; + background: hsl(0deg 0% 100% / 7%); +} From 524e81a86c65a8e39dcbf8ed63951340210c7cf4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:22:30 +0300 Subject: [PATCH 0022/1179] Update playground.js --- src/theme/playground.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index f7a6cda9a79..b96dd65b15f 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -248,11 +248,26 @@ function toggleHighlight() { const text = document.getElementById("editor").value; const searchText = document.getElementById("searchText").value; let highlighted = text; + let matches = 0; + if (button.textContent === "Highlighting found") { if (searchText) { - highlighted = highlighted.replaceAll(searchText, `${searchText}`); + const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const regex = new RegExp(escapedSearchText, 'gi'); + + highlighted = text.replace(regex, (match) => { + matches++; + return `${match}`; + }); + } + + const lines = highlighted.split('\n'); + let numberedText = ""; + for (let i = 0; i < lines.length; i++) { + numberedText += `${i + 1} ${lines[i]}
`; } - highlightedTextDiv.innerHTML = highlighted; + + highlightedTextDiv.innerHTML = numberedText + `

Results: ${matches}

`; button.textContent = "Hide"; } else { highlightedTextDiv.innerHTML = ""; @@ -260,3 +275,5 @@ function toggleHighlight() { } } + + From 1fde278b57bc8a51a5fdd42e7f0852f40bfd91fd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:34:02 +0300 Subject: [PATCH 0023/1179] Update chrome.css --- src/theme/css/chrome.css | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 7b550ab8b46..ef61c5f6b40 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1128,3 +1128,15 @@ ul#searchresults span.teaser em { background: hsl(0deg 0% 100% / 7%); } +.line-number { + border-right-width: 2px; + color: hsl(0deg 0% 100% / 30%) !important; + border-color: hsl(0deg 0% 100% / 30%); + border-right-style: solid; + display: inline-block; + width: 1.5rem; + margin-right: 1rem; + -webkit-user-select: none; + user-select: none; +} + From e63e83e742428715433304860f649a05bc5f9435 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:37:03 +0300 Subject: [PATCH 0024/1179] Update playground.js --- src/theme/playground.js | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index b96dd65b15f..4599f161016 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -250,30 +250,25 @@ function toggleHighlight() { let highlighted = text; let matches = 0; - if (button.textContent === "Highlighting found") { - if (searchText) { - const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const regex = new RegExp(escapedSearchText, 'gi'); - - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } - - const lines = highlighted.split('\n'); - let numberedText = ""; - for (let i = 0; i < lines.length; i++) { - numberedText += `${i + 1} ${lines[i]}
`; - } + if (searchText) { + const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const regex = new RegExp(escapedSearchText, 'gi'); + + highlighted = text.replace(regex, (match) => { + matches++; + return `${match}`; + }); + } - highlightedTextDiv.innerHTML = numberedText + `

Results: ${matches}

`; - button.textContent = "Hide"; - } else { - highlightedTextDiv.innerHTML = ""; - button.textContent = "Highlighting found"; + const lines = highlighted.split('\n'); + let numberedText = ""; + for (let i = 0; i < lines.length; i++) { + numberedText += `${i + 1} ${lines[i]}
`; } + + highlightedTextDiv.innerHTML = numberedText + `

Results: ${matches}

`; } + From 0a4db042152ebabd67cebe6c57c7fa398495b13f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:37:32 +0300 Subject: [PATCH 0025/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 5943b79c5f5..78cbc6c68a2 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -15,7 +15,7 @@ Here you can use the basic editor features to write codes more conveniently.
-
+

[: 0 | ]: 0

From e4889478ef45c944f6f9d7fa86c18e2c7df48bdb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:42:28 +0300 Subject: [PATCH 0026/1179] Update chrome.css --- src/theme/css/chrome.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index ef61c5f6b40..88bbb3ad1ee 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1125,6 +1125,7 @@ ul#searchresults span.teaser em { width: 100%; padding: 10px; height: 100%; + word-break: break-all; background: hsl(0deg 0% 100% / 7%); } @@ -1134,9 +1135,11 @@ ul#searchresults span.teaser em { border-color: hsl(0deg 0% 100% / 30%); border-right-style: solid; display: inline-block; - width: 1.5rem; + width: 4.2rem; margin-right: 1rem; + white-space: nowrap; -webkit-user-select: none; user-select: none; } + From bf8530c92de2a8a1621ed8d6bdf51a2ed79b8a7e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:43:25 +0300 Subject: [PATCH 0027/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 78cbc6c68a2..43f8c7ac50d 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -14,7 +14,7 @@ Here you can use the basic editor features to write codes more conveniently.

- +
From e2f60716cbdbfcdba0b726db5086d838e4ccb93e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:46:54 +0300 Subject: [PATCH 0028/1179] Update playground.js --- src/theme/playground.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 4599f161016..75297df0cdf 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -265,10 +265,6 @@ function toggleHighlight() { for (let i = 0; i < lines.length; i++) { numberedText += `${i + 1} ${lines[i]}
`; } - - highlightedTextDiv.innerHTML = numberedText + `

Results: ${matches}

`; + const resultsString = `

Results: ${matches}

`; + highlightedTextDiv.innerHTML = resultsString + numberedText; } - - - - From 6602f335243804bb84c151d73acc65d907eb23f0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:50:33 +0300 Subject: [PATCH 0029/1179] Update chrome.css --- src/theme/css/chrome.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 88bbb3ad1ee..077edef7f4b 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1089,6 +1089,7 @@ ul#searchresults span.teaser em { border: none; border-radius: 10px; cursor: pointer; + margin-top: -1rem; font-size: 1.5rem; margin: 0.25%; color: #fff; @@ -1122,7 +1123,6 @@ ul#searchresults span.teaser em { font-size: 1.5rem; border-radius: 10px; border-width: 0; - width: 100%; padding: 10px; height: 100%; word-break: break-all; @@ -1143,3 +1143,4 @@ ul#searchresults span.teaser em { } + From 6a02612c44dcf8e9329aa2edae32110d7ae22024 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:51:13 +0300 Subject: [PATCH 0030/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 43f8c7ac50d..4839a18a3b0 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -12,7 +12,7 @@ Here you can use the basic editor features to write codes more conveniently.

- +

From e53d51d377108e06d5095805e5461816a3b34e99 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:59:29 +0300 Subject: [PATCH 0031/1179] Update chrome.css --- src/theme/css/chrome.css | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 077edef7f4b..ff45a3933c0 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1089,7 +1089,7 @@ ul#searchresults span.teaser em { border: none; border-radius: 10px; cursor: pointer; - margin-top: -1rem; + margin-top: -1rem !important; font-size: 1.5rem; margin: 0.25%; color: #fff; @@ -1129,6 +1129,11 @@ ul#searchresults span.teaser em { background: hsl(0deg 0% 100% / 7%); } +#highlightedText p { + margin-top: -.3rem; + margin-bottom: .5rem; +} + .line-number { border-right-width: 2px; color: hsl(0deg 0% 100% / 30%) !important; @@ -1144,3 +1149,4 @@ ul#searchresults span.teaser em { + From a4cb7d15dfe3d9eeeeb2f7b4cc32bda194b37db1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 15:03:52 +0300 Subject: [PATCH 0032/1179] Update registerGuildCommandsComplex.md --- src/bdscript/registerGuildCommandsComplex.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bdscript/registerGuildCommandsComplex.md b/src/bdscript/registerGuildCommandsComplex.md index c09396d0598..b36ac32c53c 100644 --- a/src/bdscript/registerGuildCommandsComplex.md +++ b/src/bdscript/registerGuildCommandsComplex.md @@ -25,7 +25,8 @@ Successfully registered the guild slash command `/help`! $nomention $argsCheck[>1;Provide guild slash command names!] -$unregisterGuildCommands[$unescape[$toLowercase[$replaceText[$trimSpace[$message]; ;]]]] +$registerGuildCommands[$unescape[$toLowercase[$replaceText[$trimSpace[$message]; ;]]]] Successfully registered the provided guild slash commands! ``` ![example2](https://user-images.githubusercontent.com/111157596/233842084-413aec63-8cdd-4295-b3d3-0fe660b13792.png) + From f5b18be151192ae7645b51d797267ba9f8188348 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 14 Aug 2025 15:06:17 +0300 Subject: [PATCH 0033/1179] Update errorHandling.md --- src/guides/general/bds2/errorHandling.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/guides/general/bds2/errorHandling.md b/src/guides/general/bds2/errorHandling.md index 546ba7a0a56..476c1c4bd3f 100644 --- a/src/guides/general/bds2/errorHandling.md +++ b/src/guides/general/bds2/errorHandling.md @@ -361,7 +361,7 @@ With error handling you can embed an error for... - "Only If" Functions: [`$onlyAdmin[]`](../../../bdscript/onlyAdmin.md), [`$onlyIf[]`](../../../bdscript/onlyIf.md) and other similar "Only If" functions...; - Enabled function: [`$enabled[]`](../../../bdscript/enabled.md). -Let's create embed error for `$coodlwon[]` function: +Let's create embed error for `$cooldown[]` function: ``` $nomention @@ -409,3 +409,4 @@ How [`$cooldown[]`](../../../bdscript/cooldown.md) and [`$getCooldown[]`](../../ ```admonish danger title="BDScript 2" Don't forget to choose **BDScript 2** when using the [Error Handling functions](#functions-used)! ``` + From a1e6f4bed01231110e73aa90007911a8b93c2268 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 09:50:18 +0300 Subject: [PATCH 0034/1179] Update editor.md --- src/tools/editor.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 4839a18a3b0..f9abded7670 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -4,8 +4,9 @@ Here you can use the basic editor features to write codes more conveniently.

Words: 0

Spaces: 0

-

Lines: 0

-

Characters: 0

+

Lines: 0

+

Characters: 0

+

Bytes: 0


@@ -18,5 +19,10 @@ Here you can use the basic editor features to write codes more conveniently.
-

[: 0 | ]: 0

+

+

[0

+

]0

+

Escaped Characters: 0

+
+
From c97e119cf3f115c6fadcc4b3733bebca663ac6e0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 09:52:15 +0300 Subject: [PATCH 0035/1179] Update playground.js --- src/theme/playground.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 75297df0cdf..0c6b775e51a 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -189,11 +189,13 @@ function updateStats() { for (let i = 0; i < text.length; i++) { if (text[i] === ' ') { spaceCount++; } } const lineCount = text.split('\n').length; const charCount = text.length; + const byteCount = new TextEncoder().encode(text).length; document.getElementById("wordCount").textContent = wordCount; document.getElementById("spaceCount").textContent = spaceCount; document.getElementById("lineCount").textContent = lineCount; - document.getElementById("charCount").textContent = charCount; + document.getElementById("charCount").textContent = charCount; + document.getElementById("byteCount").textContent = byteCount; } function replaceText() { From ed17ddafe117cd259265b22dec2b36e129498eaa Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 14:00:53 +0300 Subject: [PATCH 0036/1179] Update playground.js --- src/theme/playground.js | 65 +++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 0c6b775e51a..b2108577692 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -244,29 +244,44 @@ function checkBrackets() { } } -function toggleHighlight() { - const button = document.getElementById("highlightButton"); - const highlightedTextDiv = document.getElementById("highlightedText"); - const text = document.getElementById("editor").value; - const searchText = document.getElementById("searchText").value; - let highlighted = text; - let matches = 0; - - if (searchText) { - const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const regex = new RegExp(escapedSearchText, 'gi'); - - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } - - const lines = highlighted.split('\n'); - let numberedText = ""; - for (let i = 0; i < lines.length; i++) { - numberedText += `${i + 1} ${lines[i]}
`; - } - const resultsString = `

Results: ${matches}

`; - highlightedTextDiv.innerHTML = resultsString + numberedText; +function toggleHighlight() { + const highlightedTextDiv = document.getElementById("highlightedText"); + const text = document.getElementById("editor").value; + const searchText = document.getElementById("searchText").value; + let highlighted = text; + let matches = 0; + + if (searchText) { + const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const regex = new RegExp(escapedSearchText, 'gi'); + + highlighted = text.replace(regex, (match) => { + matches++; + return `${match}`; + }); + } + + const mentionRegex = /<@(.*?)>/g; + highlighted = highlighted.replace(mentionRegex, (match, content) => { + return `@${content}`; + }); + + const channelRegex = /<#(.*?)>/g; + highlighted = highlighted.replace(channelRegex, (match, content) => { + return `#${content}`; + }); + + const boldRegex = /\*\*(.*?)\*\*/g; + highlighted = highlighted.replace(boldRegex, (match, content) => { + return `${content}`; + }); + + const lines = highlighted.split('\n'); + let numberedText = ""; + for (let i = 0; i < lines.length; i++) { + numberedText += `${i + 1} ${lines[i]}
`; + } + + const resultsString = `

Results: ${matches}

`; + highlightedTextDiv.innerHTML = resultsString + numberedText; } From 123693f6a9090e26274858789836a8033254c82e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 14:02:13 +0300 Subject: [PATCH 0037/1179] Update chrome.css --- src/theme/css/chrome.css | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index ff45a3933c0..3e0e05853aa 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1141,12 +1141,19 @@ ul#searchresults span.teaser em { border-right-style: solid; display: inline-block; width: 4.2rem; - margin-right: 1rem; - white-space: nowrap; - -webkit-user-select: none; - user-select: none; + margin-right: 1rem; + white-space: nowrap; + -webkit-user-select: none; + user-select: none; +} + +.channel, .mention { + border-radius: 10px; + color: #D5D7F9; + background-color: #3B4085 !important; + font-weight: bold; + padding: 2px; } - From 8f16d2cf041505aa62efa4c451f94f8cca327b75 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 14:11:42 +0300 Subject: [PATCH 0038/1179] Update playground.js --- src/theme/playground.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index b2108577692..c30ae5e3392 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -251,6 +251,7 @@ function toggleHighlight() { let highlighted = text; let matches = 0; + // Подсветка по поисковому запросу if (searchText) { const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); const regex = new RegExp(escapedSearchText, 'gi'); @@ -261,6 +262,7 @@ function toggleHighlight() { }); } + // Подсветка <@…> и <#…>, убираем скобки const mentionRegex = /<@(.*?)>/g; highlighted = highlighted.replace(mentionRegex, (match, content) => { return `@${content}`; @@ -271,11 +273,25 @@ function toggleHighlight() { return `#${content}`; }); + // Обработка жирного текста: **текст** -> текст const boldRegex = /\*\*(.*?)\*\*/g; highlighted = highlighted.replace(boldRegex, (match, content) => { return `${content}`; }); + // Обработка курсива: *текст* -> текст + const italicRegex = /\*(.*?)\*/g; + highlighted = highlighted.replace(italicRegex, (match, content) => { + return `${content}`; + }); + + // Обработка кода: `текст` ->

текст

+ const codeRegex = /`(.*?)`/g; + highlighted = highlighted.replace(codeRegex, (match, content) => { + return `

${content}

`; + }); + + // Добавление номеров строк const lines = highlighted.split('\n'); let numberedText = ""; for (let i = 0; i < lines.length; i++) { @@ -284,4 +300,4 @@ function toggleHighlight() { const resultsString = `

Results: ${matches}

`; highlightedTextDiv.innerHTML = resultsString + numberedText; -} +} From 970460f6f9194e9ad864fbb0ab8c56d8f9b6dab8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 14:19:19 +0300 Subject: [PATCH 0039/1179] Update playground.js --- src/theme/playground.js | 54 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index c30ae5e3392..9ebc6b0ce85 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -285,12 +285,38 @@ function toggleHighlight() { return `${content}`; }); - // Обработка кода: `текст` ->

текст

+ // Обработка кода: `текст` ->

текст

const codeRegex = /`(.*?)`/g; highlighted = highlighted.replace(codeRegex, (match, content) => { return `

${content}

`; }); + // Преобразование ссылок: автоматически распознает и создает теги + const linkRegex = /(https?:\/\/[^\s]+)/g; + highlighted = highlighted.replace(linkRegex, (url) => { + return `${url}`; + }); + + // Обработка timestamp меток + const timestampRegex = //g; + highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { + const date = new Date(parseInt(timestamp) * 1000); // Преобразуем в миллисекунды + let formattedDate = ""; + + switch (format) { + case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; + case 'd': formattedDate = date.toLocaleDateString(); break; + case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; + case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'R': formattedDate = getRelativeTime(date); break; // Функция для относительного времени (см. ниже) + default: formattedDate = "Invalid format"; + } + return formattedDate; + }); + + // Добавление номеров строк const lines = highlighted.split('\n'); let numberedText = ""; @@ -301,3 +327,29 @@ function toggleHighlight() { const resultsString = `

Results: ${matches}

`; highlightedTextDiv.innerHTML = resultsString + numberedText; } + +// Функция для получения относительного времени (например, "5 minutes ago") +function getRelativeTime(date) { + const now = new Date(); + const diffInSeconds = Math.round((now - date) / 1000); + + const intervals = { + 'year': 31536000, + 'month': 2592000, + 'day': 86400, + 'hour': 3600, + 'minute': 60, + 'second': 1 + }; + + for (const interval in intervals) { + const secondsInInterval = intervals[interval]; + const quantity = Math.floor(diffInSeconds / secondsInInterval); + + if (quantity >= 1) { + return quantity + ' ' + interval + (quantity > 1 ? 's' : '') + ' ago'; + } + } + + return 'Just now'; +} From 54ae88ed6a834ae43c7dcf00ef5a9befc52357c0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 14:22:47 +0300 Subject: [PATCH 0040/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index f9abded7670..3f688d7690c 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor +# Text Editor 14:22 last update Here you can use the basic editor features to write codes more conveniently.
From d338c37665a46e847b025559f06e9f3c28fce289 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:25:24 +0300 Subject: [PATCH 0041/1179] Update playground.js --- src/theme/playground.js | 66 ++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 9ebc6b0ce85..8ff806ee58f 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -244,6 +244,7 @@ function checkBrackets() { } } + function toggleHighlight() { const highlightedTextDiv = document.getElementById("highlightedText"); const text = document.getElementById("editor").value; @@ -291,32 +292,31 @@ function toggleHighlight() { return `

${content}

`; }); - // Преобразование ссылок: автоматически распознает и создает теги + // Преобразование ссылок: автоматически распознает и создает теги const linkRegex = /(https?:\/\/[^\s]+)/g; highlighted = highlighted.replace(linkRegex, (url) => { return `${url}`; }); - // Обработка timestamp меток + // Обработка timestamp меток const timestampRegex = //g; highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { - const date = new Date(parseInt(timestamp) * 1000); // Преобразуем в миллисекунды - let formattedDate = ""; + const date = new Date(parseInt(timestamp) * 1000); // Преобразуем в миллисекунды + let formattedDate = ""; - switch (format) { - case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; - case 'd': formattedDate = date.toLocaleDateString(); break; - case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; - case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'R': formattedDate = getRelativeTime(date); break; // Функция для относительного времени (см. ниже) - default: formattedDate = "Invalid format"; - } - return formattedDate; + switch (format) { + case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; + case 'd': formattedDate = date.toLocaleDateString(); break; + case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; + case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'R': formattedDate = getRelativeTime(date); break; // Функция для относительного времени (см. ниже) + default: formattedDate = "Invalid format"; + } + return `${formattedDate}`; // Оборачиваем в span }); - // Добавление номеров строк const lines = highlighted.split('\n'); let numberedText = ""; @@ -330,26 +330,26 @@ function toggleHighlight() { // Функция для получения относительного времени (например, "5 minutes ago") function getRelativeTime(date) { - const now = new Date(); - const diffInSeconds = Math.round((now - date) / 1000); + const now = new Date(); + const diffInSeconds = Math.round((now - date) / 1000); - const intervals = { - 'year': 31536000, - 'month': 2592000, - 'day': 86400, - 'hour': 3600, - 'minute': 60, - 'second': 1 - }; + const intervals = { + 'year': 31536000, + 'month': 2592000, + 'day': 86400, + 'hour': 3600, + 'minute': 60, + 'second': 1 + }; - for (const interval in intervals) { - const secondsInInterval = intervals[interval]; - const quantity = Math.floor(diffInSeconds / secondsInInterval); + for (const interval in intervals) { + const secondsInInterval = intervals[interval]; + const quantity = Math.floor(diffInSeconds / secondsInInterval); - if (quantity >= 1) { - return quantity + ' ' + interval + (quantity > 1 ? 's' : '') + ' ago'; + if (quantity >= 1) { + return quantity + ' ' + interval + (quantity > 1 ? 's' : '') + ' ago'; + } } - } - return 'Just now'; + return 'Just now'; } From afdd0eab1d593087f5237f35f4e7a88af83df959 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:25:49 +0300 Subject: [PATCH 0042/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 3f688d7690c..6f221464ebd 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 14:22 last update +# Text Editor 16:22 last update Here you can use the basic editor features to write codes more conveniently.
From 537577f0c654bfeb0ab57d1dc8380e2a2ba9ddf5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:27:05 +0300 Subject: [PATCH 0043/1179] Update chrome.css --- src/theme/css/chrome.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 3e0e05853aa..c7a87727eb7 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1011,7 +1011,7 @@ ul#searchresults span.teaser em { } /* Tools Editor */ -#stats-container p { +#stats-container p, #another-info p { transition: .4s; display: inline-block; margin-right: 7.5px; @@ -1026,14 +1026,14 @@ ul#searchresults span.teaser em { font-weight: bold; } -#stats-container p:hover { +#stats-container p:hover, #another-info p:hover { transform: scale(1.1); border-radius: 8px; border-width: 1px; transition: .4s; } -#stats-container { +#stats-container, #another-info { margin-top: -2.5%; display: flex; flex-direction: row; From 1e2250ee8d26163c7dd64d48472efb24172ce2d0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:28:40 +0300 Subject: [PATCH 0044/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 6f221464ebd..4a78c4131b3 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 16:22 last update +# Text Editor 16:28 last update Here you can use the basic editor features to write codes more conveniently.
From 2d70b6d080099812a8ac517a08f2aadccbe003f3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 21:19:28 +0300 Subject: [PATCH 0045/1179] Update chrome.css --- src/theme/css/chrome.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index c7a87727eb7..5cf6e68e17f 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1148,9 +1148,9 @@ ul#searchresults span.teaser em { } .channel, .mention { - border-radius: 10px; - color: #D5D7F9; - background-color: #3B4085 !important; + border-radius: 5px; + color: hsl(0deg 0% 100% / 50%) !important; + background-color: hsl(0deg 0% 100% / 10%) !important; font-weight: bold; padding: 2px; } From 47eaac50c35a0fec5fbf84a91b03c52756690715 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 21:38:59 +0300 Subject: [PATCH 0046/1179] Update chrome.css --- src/theme/css/chrome.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 5cf6e68e17f..dd5a86791b7 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1117,6 +1117,10 @@ ul#searchresults span.teaser em { #highlightedText span { color: var(--color1); } + +#highlightedText a { + color: white; +} #highlightedText { color: #bbb; From cb42eadcc1acd1b82421b32cdc0ee5346c5f147b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 21:40:14 +0300 Subject: [PATCH 0047/1179] Update chrome.css --- src/theme/css/chrome.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index dd5a86791b7..8da2648a80c 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1119,7 +1119,7 @@ ul#searchresults span.teaser em { } #highlightedText a { - color: white; + color: white !important; } #highlightedText { From a22c5f42c3f5b88291868aa75dba24760da07b3a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 21:52:10 +0300 Subject: [PATCH 0048/1179] Update chrome.css --- src/theme/css/chrome.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 8da2648a80c..2a9d3cd958c 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1158,6 +1158,10 @@ ul#searchresults span.teaser em { font-weight: bold; padding: 2px; } - + +.timestamp { + color: #bbb !important; + background-color: hsl(0deg 0% 100% / 5%) !important; +} From 6d7d67532be203f40defb0ca74c35bd536b71f4d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 22:02:37 +0300 Subject: [PATCH 0049/1179] Update playground.js --- src/theme/playground.js | 58 +++++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 8ff806ee58f..0cd4fdec3ab 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -181,22 +181,52 @@ function editInputHeight() { } // Editor tools -function updateStats() { - const text = document.getElementById("editor").value; - const words = text.trim().split(/\s+/).filter(word => word !== ""); - const wordCount = words.length; - let spaceCount = 0; - for (let i = 0; i < text.length; i++) { if (text[i] === ' ') { spaceCount++; } } - const lineCount = text.split('\n').length; - const charCount = text.length; +function updateStats() { + const text = document.getElementById("editor").value; + + // Подсчет слов + const words = text.trim().split(/\s+/).filter(word => word !== ""); + const wordCount = words.length; + + // Подсчет пробелов + let spaceCount = 0; + for (let i = 0; i < text.length; i++) { + if (text[i] === ' ') { + spaceCount++; + } + } + + // Подсчет строк + const lineCount = text.split('\n').length; + + // Подсчет символов + const charCount = text.length; + + // Подсчет байт const byteCount = new TextEncoder().encode(text).length; - - document.getElementById("wordCount").textContent = wordCount; - document.getElementById("spaceCount").textContent = spaceCount; - document.getElementById("lineCount").textContent = lineCount; + + // Подсчет escape-последовательностей + const escapes = ["%{DOL}%", "%ESCAPED%", "\\]", "\\;", "%{-SEMICOL-}%"]; + let escapesCount = 0; + escapes.forEach(escape => { + let count = 0; + let position = text.indexOf(escape); + while (position !== -1) { + count++; + position = text.indexOf(escape, position + escape.length); + } + escapesCount += count; + }); + + // Обновление элементов на странице + document.getElementById("wordCount").textContent = wordCount; + document.getElementById("spaceCount").textContent = spaceCount; + document.getElementById("lineCount").textContent = lineCount; document.getElementById("charCount").textContent = charCount; - document.getElementById("byteCount").textContent = byteCount; -} + document.getElementById("byteCount").textContent = byteCount; + document.getElementById("escapesCount").textContent = escapesCount; +} + function replaceText() { const searchText = document.getElementById("searchText").value; From 6779e5173f9bb400e5cbe82cdb4150f43cd516f3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 15 Aug 2025 22:03:27 +0300 Subject: [PATCH 0050/1179] Update editor.md --- src/tools/editor.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 4a78c4131b3..ca1d9dceac7 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 16:28 last update +# Text Editor 22:03 last update Here you can use the basic editor features to write codes more conveniently.
@@ -22,7 +22,7 @@ Here you can use the basic editor features to write codes more conveniently.

[0

]0

-

Escaped Characters: 0

+

Escaped Characters: 0

From 644b373caf1e1ddd221941c2ee32421bc4e0118a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 10:05:01 +0300 Subject: [PATCH 0051/1179] Update chrome.css --- src/theme/css/chrome.css | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 2a9d3cd958c..0f9e5e67de8 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1164,4 +1164,9 @@ ul#searchresults span.teaser em { background-color: hsl(0deg 0% 100% / 5%) !important; } - +.hg-code { + border-radius: 5px; + color: hsl(0deg 0% 100% / 50%) !important; + background-color: hsl(0deg 0% 100% / 10%) !important; + padding: 2px; +} From 7f156756e88915b2bcd3ca252a10d76f8a63801d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 10:11:42 +0300 Subject: [PATCH 0052/1179] Update chrome.css --- src/theme/css/chrome.css | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 0f9e5e67de8..9a7aacc162a 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1166,7 +1166,10 @@ ul#searchresults span.teaser em { .hg-code { border-radius: 5px; - color: hsl(0deg 0% 100% / 50%) !important; - background-color: hsl(0deg 0% 100% / 10%) !important; - padding: 2px; + border-width: 2px; + border-style: solid; + border-color: hsl(0deg 0% 100% / 10%) !important; + color: hsl(0deg 0% 100% / 40%) !important; + background-color: hsl(0deg 0% 100% / 5%) !important; + padding: 1px; } From cc0870d89f1a8689fffe1d34cc33a99c8514697a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 10:16:25 +0300 Subject: [PATCH 0053/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index ca1d9dceac7..cc8cc277249 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 22:03 last update +# Text Editor 10:16 last update Here you can use the basic editor features to write codes more conveniently.
From a389bca02c4897ac4797ac354b08b4b0237ca67c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 10:18:25 +0300 Subject: [PATCH 0054/1179] Update chrome.css --- src/theme/css/chrome.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 9a7aacc162a..a2a16bfbd80 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1164,7 +1164,7 @@ ul#searchresults span.teaser em { background-color: hsl(0deg 0% 100% / 5%) !important; } -.hg-code { +p #hg-code { border-radius: 5px; border-width: 2px; border-style: solid; From 36584821068395eb12894275a67ac44c2b95421d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 10:19:17 +0300 Subject: [PATCH 0055/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index cc8cc277249..dd2ed9c02a1 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 10:16 last update +# Text Editor 10:19 last update Here you can use the basic editor features to write codes more conveniently.
From 7a1562db32d2be4b405fd976a6c00152bb2f76af Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 10:22:25 +0300 Subject: [PATCH 0056/1179] Update chrome.css --- src/theme/css/chrome.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index a2a16bfbd80..c1ab4efd341 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1163,8 +1163,8 @@ ul#searchresults span.teaser em { color: #bbb !important; background-color: hsl(0deg 0% 100% / 5%) !important; } - -p #hg-code { + +#hg-code { border-radius: 5px; border-width: 2px; border-style: solid; From 46d543abf3df2a40be407b1f955626287ff7841f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 10:23:40 +0300 Subject: [PATCH 0057/1179] Update settings.md --- src/settings.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/settings.md b/src/settings.md index 009657cdcac..80033428faf 100644 --- a/src/settings.md +++ b/src/settings.md @@ -29,6 +29,7 @@ Let's customize your experience in our Bot Designer For Discord wiki world! +

270°

From c5394a994958bf1e52d67ea8bf129e527ecd030a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 10:27:44 +0300 Subject: [PATCH 0058/1179] Update index.js --- src/theme/settings/index.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/theme/settings/index.js b/src/theme/settings/index.js index 998fad3a552..342938f0bb9 100644 --- a/src/theme/settings/index.js +++ b/src/theme/settings/index.js @@ -233,14 +233,18 @@ let isLocked = true; // Used in status bar (iPhone). function setStatusBar(HueInput) { - if (HueInput != "dark") { + if (HueInput == "dark") { document .querySelector('meta[name="theme-color"]') - .setAttribute("content", `hsl(${HueInput}, 80%, 8%)`); + .setAttribute("content", `#000`); + } else if (HueInput) == "light") { + document + .querySelector('meta[name="theme-color"]') + .setAttribute("content", `#fff`); } else { document .querySelector('meta[name="theme-color"]') - .setAttribute("content", `#000`); + .setAttribute("content", `hsl(${HueInput}, 80%, 8%)`); } } @@ -385,6 +389,13 @@ function useDarkBackground() { updateJsonFile("theme-bg", document.body.style.background); } +function useLightBackground() { + document.body.style.background = `#fff`; + document.documentElement.style.scrollbarColor = `#000` + `#fff`; + setStatusBar("light"); + updateJsonFile("theme-bg", document.body.style.background); +} + function resetTheme() { const colorSlider = document.getElementById("themeSlider"); From 1c51af8f0860d18036297d2f705797ec5bcc9d09 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 10:54:16 +0300 Subject: [PATCH 0059/1179] Update chrome.css --- src/theme/css/chrome.css | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index c1ab4efd341..74be6abcd8d 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1164,12 +1164,14 @@ ul#searchresults span.teaser em { background-color: hsl(0deg 0% 100% / 5%) !important; } -#hg-code { - border-radius: 5px; +.hg-code { + border-radius: 5px; border-width: 2px; border-style: solid; border-color: hsl(0deg 0% 100% / 10%) !important; color: hsl(0deg 0% 100% / 40%) !important; - background-color: hsl(0deg 0% 100% / 5%) !important; + background-color: hsl(0deg 0% 100% / 5%) !important; padding: 1px; -} + display: inline-block; +} + From 6ec7e75c5580c78d9d14668714dcf52ebd8b30e0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 11:42:07 +0300 Subject: [PATCH 0060/1179] Update playground.js --- src/theme/playground.js | 78 +++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 35 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 0cd4fdec3ab..eeeb9c57eb0 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -237,42 +237,50 @@ function replaceText() { checkBrackets(); } -function checkBrackets() { - const text = document.getElementById("editor").value; - let openBrackets = 0; - let closeBrackets = 0; - let i = 0; - - while (i < text.length) { - if (text[i] === '[') { - openBrackets++; - i++; - } else if (text[i] === ']' && (i === 0 || text[i - 1] !== '\\')) { - closeBrackets++; - i++; - } else { - i++; - } - } - - document.getElementById("openCount").textContent = openBrackets; - document.getElementById("closeCount").textContent = closeBrackets; - - const errorMessageElement = document.getElementById("error-message"); +function checkBrackets() { + const text = document.getElementById("editor").value; + let openBrackets = 0; + let closeBrackets = 0; + let i = 0; + + // Считаем скобки, но только если перед ними есть $ + while (i < text.length) { + if (text[i] === '[' && i > 0 && text[i - 1] === '$') { // Проверяем, что перед '[' есть '$' + openBrackets++; + } else if (text[i] === ']' && i > 0 && (i === 1 || text[i - 1] !== '\\')) { // Проверяем ']' и экранирование + closeBrackets++; + } + i++; + } + + document.getElementById("openCount").textContent = openBrackets; + document.getElementById("closeCount").textContent = closeBrackets; + + const errorMessageElement = document.getElementById("error-message"); + + // Проверяем баланс скобок и выводим ошибку, только если были найдены скобки с '$' + if (openBrackets > 0 || closeBrackets > 0) { + if (errorMessageElement) { + if (openBrackets > closeBrackets) { + errorMessageElement.textContent = "Error: Brackets are not closed."; + errorMessageElement.style.color = "red"; + } else if (openBrackets < closeBrackets) { + errorMessageElement.textContent = "Warning: Different amounts of [ and ] are used."; + errorMessageElement.style.color = "orange"; + } else { + errorMessageElement.textContent = ""; + errorMessageElement.style.color = "black"; + } + } + } else { + // Если скобки с '$' не найдены, очищаем сообщение об ошибке + if (errorMessageElement) { + errorMessageElement.textContent = ""; + errorMessageElement.style.color = "black"; + } + } +} - if (errorMessageElement) { - if (openBrackets > closeBrackets) { - errorMessageElement.textContent = "Error: Brackets are not closed.."; - errorMessageElement.style.color = "red"; - } else if (openBrackets < closeBrackets) { - errorMessageElement.textContent = "Warning: Different amounts of [ and ] are used"; - errorMessageElement.style.color = "orange"; - } else { - errorMessageElement.textContent = ""; - errorMessageElement.style.color = "black"; - } - } -} function toggleHighlight() { From d83eccb27d152bcc1f468d34df754ca9e9c8267f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 11:44:25 +0300 Subject: [PATCH 0061/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index dd2ed9c02a1..83ecc1883dd 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 10:19 last update +# Text Editor 11:44 last update Here you can use the basic editor features to write codes more conveniently.
From c87e8094dcae378a1fa4b03183c3b5caac7b0937 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 11:46:46 +0300 Subject: [PATCH 0062/1179] Update playground.js --- src/theme/playground.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index eeeb9c57eb0..f5446b705fc 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -242,12 +242,14 @@ function checkBrackets() { let openBrackets = 0; let closeBrackets = 0; let i = 0; + let dollarSignFound = false; // Флаг для отслеживания наличия '$' - // Считаем скобки, но только если перед ними есть $ + // Проходим по тексту и считаем скобки, если перед ними есть '$' while (i < text.length) { - if (text[i] === '[' && i > 0 && text[i - 1] === '$') { // Проверяем, что перед '[' есть '$' + if (text[i] === '[' && i > 0 && text[i - 1] === '$') { openBrackets++; - } else if (text[i] === ']' && i > 0 && (i === 1 || text[i - 1] !== '\\')) { // Проверяем ']' и экранирование + dollarSignFound = true; // Отмечаем, что нашли '$' перед '[' + } else if (text[i] === ']' && (i === 0 || text[i - 1] !== '\\')) { closeBrackets++; } i++; @@ -258,8 +260,8 @@ function checkBrackets() { const errorMessageElement = document.getElementById("error-message"); - // Проверяем баланс скобок и выводим ошибку, только если были найдены скобки с '$' - if (openBrackets > 0 || closeBrackets > 0) { + // Выводим сообщение об ошибке, только если были найдены '$' + if (dollarSignFound) { if (errorMessageElement) { if (openBrackets > closeBrackets) { errorMessageElement.textContent = "Error: Brackets are not closed."; @@ -268,20 +270,18 @@ function checkBrackets() { errorMessageElement.textContent = "Warning: Different amounts of [ and ] are used."; errorMessageElement.style.color = "orange"; } else { - errorMessageElement.textContent = ""; + errorMessageElement.textContent = ""; // Очищаем, если скобки сбалансированы errorMessageElement.style.color = "black"; } } } else { - // Если скобки с '$' не найдены, очищаем сообщение об ошибке + // Если '$' не найден, очищаем сообщение if (errorMessageElement) { errorMessageElement.textContent = ""; errorMessageElement.style.color = "black"; } } -} - - +} function toggleHighlight() { const highlightedTextDiv = document.getElementById("highlightedText"); From cc3f87000c4c25f80d90d4263d4994a38c73a8ca Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 11:47:19 +0300 Subject: [PATCH 0063/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 83ecc1883dd..52c52fd9683 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 11:44 last update +# Text Editor 11:47 last update Here you can use the basic editor features to write codes more conveniently.
From 9d268137cc230ec36fdcb983b68513b69beb25de Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 11:50:37 +0300 Subject: [PATCH 0064/1179] Update playground.js --- src/theme/playground.js | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index f5446b705fc..2267c80b381 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -242,13 +242,18 @@ function checkBrackets() { let openBrackets = 0; let closeBrackets = 0; let i = 0; - let dollarSignFound = false; // Флаг для отслеживания наличия '$' + let lastDollarIndex = -1; + let emptyParamsWarning = false; // Флаг для предупреждения о пустых параметрах - // Проходим по тексту и считаем скобки, если перед ними есть '$' while (i < text.length) { - if (text[i] === '[' && i > 0 && text[i - 1] === '$') { + if (text[i] === '$') { + lastDollarIndex = i; + } else if (text[i] === '[' && lastDollarIndex === i - 1) { openBrackets++; - dollarSignFound = true; // Отмечаем, что нашли '$' перед '[' + // Проверка на пустые параметры: если сразу после '[' идет ']' + if (text[i + 1] === ']') { + emptyParamsWarning = true; + } } else if (text[i] === ']' && (i === 0 || text[i - 1] !== '\\')) { closeBrackets++; } @@ -260,23 +265,17 @@ function checkBrackets() { const errorMessageElement = document.getElementById("error-message"); - // Выводим сообщение об ошибке, только если были найдены '$' - if (dollarSignFound) { - if (errorMessageElement) { - if (openBrackets > closeBrackets) { - errorMessageElement.textContent = "Error: Brackets are not closed."; - errorMessageElement.style.color = "red"; - } else if (openBrackets < closeBrackets) { - errorMessageElement.textContent = "Warning: Different amounts of [ and ] are used."; - errorMessageElement.style.color = "orange"; - } else { - errorMessageElement.textContent = ""; // Очищаем, если скобки сбалансированы - errorMessageElement.style.color = "black"; - } - } - } else { - // Если '$' не найден, очищаем сообщение - if (errorMessageElement) { + if (errorMessageElement) { + if (openBrackets > closeBrackets) { + errorMessageElement.textContent = "Error: Brackets are not closed."; + errorMessageElement.style.color = "red"; + } else if (openBrackets < closeBrackets) { + errorMessageElement.textContent = "Warning: Different amounts of [ and ] are used."; + errorMessageElement.style.color = "orange"; + } else if (emptyParamsWarning) { + errorMessageElement.textContent = "Warning: Empty parameters in brackets."; + errorMessageElement.style.color = "purple"; + } else { errorMessageElement.textContent = ""; errorMessageElement.style.color = "black"; } From 03b8c8cc5d961da46249ecfee72c9dee9c5ce18f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 12:05:58 +0300 Subject: [PATCH 0065/1179] Update playground.js --- src/theme/playground.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 2267c80b381..a105ae74239 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -241,23 +241,22 @@ function checkBrackets() { const text = document.getElementById("editor").value; let openBrackets = 0; let closeBrackets = 0; - let i = 0; let lastDollarIndex = -1; - let emptyParamsWarning = false; // Флаг для предупреждения о пустых параметрах + let emptyParamsWarning = false; + let hasDollar = false; // Флаг для проверки, был ли вообще символ $ - while (i < text.length) { + for (let i = 0; i < text.length; i++) { if (text[i] === '$') { lastDollarIndex = i; + hasDollar = true; // Отмечаем, что нашли $ } else if (text[i] === '[' && lastDollarIndex === i - 1) { openBrackets++; - // Проверка на пустые параметры: если сразу после '[' идет ']' if (text[i + 1] === ']') { emptyParamsWarning = true; } } else if (text[i] === ']' && (i === 0 || text[i - 1] !== '\\')) { closeBrackets++; } - i++; } document.getElementById("openCount").textContent = openBrackets; @@ -265,20 +264,23 @@ function checkBrackets() { const errorMessageElement = document.getElementById("error-message"); - if (errorMessageElement) { + if (hasDollar) { // Проверяем, был ли вообще знак $ if (openBrackets > closeBrackets) { errorMessageElement.textContent = "Error: Brackets are not closed."; errorMessageElement.style.color = "red"; } else if (openBrackets < closeBrackets) { errorMessageElement.textContent = "Warning: Different amounts of [ and ] are used."; errorMessageElement.style.color = "orange"; - } else if (emptyParamsWarning) { + } else if (emptyParamsWarning && openBrackets > 0) { // Проверяем только если были открыты скобки после $ errorMessageElement.textContent = "Warning: Empty parameters in brackets."; - errorMessageElement.style.color = "purple"; + errorMessageElement.style.color = "orange"; } else { errorMessageElement.textContent = ""; errorMessageElement.style.color = "black"; } + } else { + errorMessageElement.textContent = ""; + errorMessageElement.style.color = "black"; } } From 52e37a499b9c9e25f472eb8d76a50edb5cb1fb4c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 12:09:38 +0300 Subject: [PATCH 0066/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 52c52fd9683..4ea47600157 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 11:47 last update +# Text Editor 12:09 last update Here you can use the basic editor features to write codes more conveniently.
From 7e7759b8a0cab3cddf205686a8778a6ee8f5609c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 12:36:49 +0300 Subject: [PATCH 0067/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 4ea47600157..258e049d7e6 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 12:09 last update +# Text Editor 12:36 last update Here you can use the basic editor features to write codes more conveniently.
From 18a6a495dd2687a95dcb470fcd5760ab7ade357f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 12:39:57 +0300 Subject: [PATCH 0068/1179] Update playground.js --- src/theme/playground.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index a105ae74239..9de8246f30f 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -266,13 +266,13 @@ function checkBrackets() { if (hasDollar) { // Проверяем, был ли вообще знак $ if (openBrackets > closeBrackets) { - errorMessageElement.textContent = "Error: Brackets are not closed."; + errorMessageElement.textContent = "Error: Brackets are not closed"; errorMessageElement.style.color = "red"; } else if (openBrackets < closeBrackets) { - errorMessageElement.textContent = "Warning: Different amounts of [ and ] are used."; + errorMessageElement.textContent = "Warning: Different amounts of [ and ] are used"; errorMessageElement.style.color = "orange"; } else if (emptyParamsWarning && openBrackets > 0) { // Проверяем только если были открыты скобки после $ - errorMessageElement.textContent = "Warning: Empty parameters in brackets."; + errorMessageElement.textContent = "Warning: Empty parameters in brackets"; errorMessageElement.style.color = "orange"; } else { errorMessageElement.textContent = ""; From a64e6309d51fc9fb078c5a524b4443252c2819ba Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 13:53:18 +0300 Subject: [PATCH 0069/1179] Update editor.md --- src/tools/editor.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index 258e049d7e6..b60c6459ec5 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -7,6 +7,7 @@ Here you can use the basic editor features to write codes more conveniently.

Lines: 0

Characters: 0

Bytes: 0

+


From 2b3289e936957066edea3b01b5ed2cd8819b7ac7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 13:55:45 +0300 Subject: [PATCH 0070/1179] Update playground.js --- src/theme/playground.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 9de8246f30f..327ee433443 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -392,3 +392,16 @@ function getRelativeTime(date) { return 'Just now'; } + +function copyText() { + const textarea = document.getElementById("editor"); + textarea.select(); + + try { + document.execCommand("copy"); + } catch (err) { + console.error("Unable to copy text: ", err); + } + + window.getSelection().removeAllRanges(); +} \ No newline at end of file From 3ea0d644c6be0bc4e38ed9219936a52b0ccfac99 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 16 Aug 2025 14:01:56 +0300 Subject: [PATCH 0071/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index b60c6459ec5..d8401833db1 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 12:36 last update +# Text Editor 14:01 last update Here you can use the basic editor features to write codes more conveniently.
From 26cbf49749f27464dc79b908369d372e7fad35a0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 18 Aug 2025 19:29:48 +0300 Subject: [PATCH 0072/1179] Update playground.js --- src/theme/playground.js | 61 +++++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 327ee433443..5004270a7e9 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -239,20 +239,29 @@ function replaceText() { function checkBrackets() { const text = document.getElementById("editor").value; + const textBytes = new TextEncoder().encode(text).length; + let dollarCount = 0; let openBrackets = 0; let closeBrackets = 0; - let lastDollarIndex = -1; - let emptyParamsWarning = false; - let hasDollar = false; // Флаг для проверки, был ли вообще символ $ + const errors = []; + + if (textBytes > 65000) { + errors.push({ message: "Text exceeds the allowed size (65000 bytes).", id: errors.length }); + } + + if (text.indexOf('$') === -1 && text.length > 2000) { + errors.push({ message: "Character limit exceeded (2000) for messages without $.", id: errors.length }); + } for (let i = 0; i < text.length; i++) { if (text[i] === '$') { - lastDollarIndex = i; - hasDollar = true; // Отмечаем, что нашли $ - } else if (text[i] === '[' && lastDollarIndex === i - 1) { + if (i + 1 < text.length && /[a-zA-Z]/.test(text[i + 1])) { + dollarCount++; + } + } else if (text[i] === '[') { openBrackets++; - if (text[i + 1] === ']') { - emptyParamsWarning = true; + if (i + 1 < text.length && text[i + 1] === ']') { + errors.push({ message: "Empty brackets [] detected.", id: errors.length }); } } else if (text[i] === ']' && (i === 0 || text[i - 1] !== '\\')) { closeBrackets++; @@ -263,25 +272,35 @@ function checkBrackets() { document.getElementById("closeCount").textContent = closeBrackets; const errorMessageElement = document.getElementById("error-message"); + errorMessageElement.innerHTML = ""; - if (hasDollar) { // Проверяем, был ли вообще знак $ - if (openBrackets > closeBrackets) { - errorMessageElement.textContent = "Error: Brackets are not closed"; - errorMessageElement.style.color = "red"; - } else if (openBrackets < closeBrackets) { - errorMessageElement.textContent = "Warning: Different amounts of [ and ] are used"; - errorMessageElement.style.color = "orange"; - } else if (emptyParamsWarning && openBrackets > 0) { // Проверяем только если были открыты скобки после $ - errorMessageElement.textContent = "Warning: Empty parameters in brackets"; - errorMessageElement.style.color = "orange"; - } else { - errorMessageElement.textContent = ""; - errorMessageElement.style.color = "black"; + if (openBrackets <= dollarCount) { + if (closeBrackets < openBrackets) { + errors.push({ message: "Not all open brackets are closed.", id: errors.length }); } + } + + if (errors.length > 0) { + errorMessageElement.style.color = "red"; + errors.forEach(error => { + const errorDiv = document.createElement("div"); + errorDiv.innerHTML = `${error.message} ×`; + errorMessageElement.appendChild(errorDiv); + }); + + errorMessageElement.addEventListener("click", function(event) { + if (event.target.classList.contains("close-btn")) { + const errorId = parseInt(event.target.dataset.id); + const errorDiv = event.target.parentNode; + errorDiv.remove(); + } + }); } else { errorMessageElement.textContent = ""; errorMessageElement.style.color = "black"; } +} + } function toggleHighlight() { From a30b6c6eaaba92745c02561a57cad4cffd54503c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 18 Aug 2025 19:32:28 +0300 Subject: [PATCH 0073/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index d8401833db1..d718ce8424d 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 14:01 last update +# Text Editor Here you can use the basic editor features to write codes more conveniently.
From d85b090ab8f6c68b09f428a8cac708cf235d6421 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 18 Aug 2025 20:07:59 +0300 Subject: [PATCH 0074/1179] Update playground.js --- src/theme/playground.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 5004270a7e9..a74b6e07dda 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -299,8 +299,6 @@ function checkBrackets() { errorMessageElement.textContent = ""; errorMessageElement.style.color = "black"; } -} - } function toggleHighlight() { From ff48c4d540468f62ec4d88e3d620e75aa8194d84 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 18 Aug 2025 20:08:26 +0300 Subject: [PATCH 0075/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index d718ce8424d..ab7cbf430c6 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor +# Text Editor 20 Here you can use the basic editor features to write codes more conveniently.
From 7b75d74a85de0318963af5aacd2bfa69e9a21a3b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 18 Aug 2025 22:24:07 +0300 Subject: [PATCH 0076/1179] Update playground.js --- src/theme/playground.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index a74b6e07dda..a869cc978bd 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -284,6 +284,7 @@ function checkBrackets() { errorMessageElement.style.color = "red"; errors.forEach(error => { const errorDiv = document.createElement("div"); + errorDiv.style.display = "block"; errorDiv.innerHTML = `${error.message} ×`; errorMessageElement.appendChild(errorDiv); }); From ebdb893568b0e2b0367065d9dbd92bcec731e32a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 18 Aug 2025 22:46:16 +0300 Subject: [PATCH 0077/1179] Update chrome.css --- src/theme/css/chrome.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 74be6abcd8d..63b90e9aaba 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1175,3 +1175,13 @@ ul#searchresults span.teaser em { display: inline-block; } +.close-btn { + background-color: hsl(0deg 0% 100% / 25%); + color: red ! important; + padding: 5px 10px 5px 10px; + width: 25px; + border-radius: 60px; + border-color: hsl(0deg 0% 100% / 30%); + border-style: solid; + border-width: 1px; +} \ No newline at end of file From f3c332d90c66d9fe0f716e85ee19e2fa200ee060 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 18 Aug 2025 22:47:15 +0300 Subject: [PATCH 0078/1179] Update playground.js --- src/theme/playground.js | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index a869cc978bd..02b7eef1185 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -237,13 +237,14 @@ function replaceText() { checkBrackets(); } + function checkBrackets() { - const text = document.getElementById("editor").value; - const textBytes = new TextEncoder().encode(text).length; - let dollarCount = 0; - let openBrackets = 0; - let closeBrackets = 0; - const errors = []; + const text = document.getElementById("editor").value; // Получаем текст из поля ввода + const textBytes = new TextEncoder().encode(text).length; // Считаем размер текста в байтах + let dollarCount = 0; // Счетчик знаков доллара + let openBrackets = 0; // Счетчик открывающих скобок + let closeBrackets = 0; // Счетчик закрывающих скобок + const errors = []; // Массив для хранения ошибок if (textBytes > 65000) { errors.push({ message: "Text exceeds the allowed size (65000 bytes).", id: errors.length }); @@ -253,18 +254,22 @@ function checkBrackets() { errors.push({ message: "Character limit exceeded (2000) for messages without $.", id: errors.length }); } - for (let i = 0; i < text.length; i++) { - if (text[i] === '$') { - if (i + 1 < text.length && /[a-zA-Z]/.test(text[i + 1])) { - dollarCount++; - } - } else if (text[i] === '[') { - openBrackets++; - if (i + 1 < text.length && text[i + 1] === ']') { - errors.push({ message: "Empty brackets [] detected.", id: errors.length }); + const lines = text.split('\n'); // Разбиваем текст на строки + for (let i = 0; i < lines.length; i++) { // Перебираем строки + const line = lines[i]; + for (let j = 0; j < line.length; j++) { // Перебираем символы в строке + if (line[j] === '$') { + if (j + 1 < line.length && /[a-zA-Z]/.test(line[j + 1])) { + dollarCount++; + } + } else if (line[j] === '[') { + openBrackets++; + if (j + 1 < line.length && line[j + 1] === ']') { + errors.push({ message: `Empty brackets [] detected on line ${i + 1}.`, id: errors.length }); // Добавляем номер строки в сообщение об ошибке + } + } else if (line[j] === ']' && (j === 0 || line[j - 1] !== '\\')) { + closeBrackets++; } - } else if (text[i] === ']' && (i === 0 || text[i - 1] !== '\\')) { - closeBrackets++; } } @@ -291,7 +296,6 @@ function checkBrackets() { errorMessageElement.addEventListener("click", function(event) { if (event.target.classList.contains("close-btn")) { - const errorId = parseInt(event.target.dataset.id); const errorDiv = event.target.parentNode; errorDiv.remove(); } From 7ca76505b8f64da4d447f3a3635320433810c15c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 18 Aug 2025 22:52:16 +0300 Subject: [PATCH 0079/1179] Update playground.js --- src/theme/playground.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 02b7eef1185..ecb4a994dfa 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -286,10 +286,17 @@ function checkBrackets() { } if (errors.length > 0) { - errorMessageElement.style.color = "red"; + errorMessageElement.style.color = "red"; // Цвет по умолчанию - красный + errors.forEach(error => { const errorDiv = document.createElement("div"); errorDiv.style.display = "block"; + + // Проверяем текст ошибки, чтобы применить оранжевый цвет + if (error.message.includes("Empty brackets") || error.message.includes("Character limit exceeded")) { + errorDiv.style.color = "orange"; // Устанавливаем оранжевый цвет + } + errorDiv.innerHTML = `${error.message} ×`; errorMessageElement.appendChild(errorDiv); }); From 5a92a459d4adcfd8eba1fc139567cc85e72cd0d5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 18 Aug 2025 23:23:09 +0300 Subject: [PATCH 0080/1179] Update playground.js --- src/theme/playground.js | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index ecb4a994dfa..37355222198 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -184,11 +184,9 @@ function editInputHeight() { function updateStats() { const text = document.getElementById("editor").value; - // Подсчет слов const words = text.trim().split(/\s+/).filter(word => word !== ""); const wordCount = words.length; - // Подсчет пробелов let spaceCount = 0; for (let i = 0; i < text.length; i++) { if (text[i] === ' ') { @@ -196,16 +194,9 @@ function updateStats() { } } - // Подсчет строк const lineCount = text.split('\n').length; - - // Подсчет символов const charCount = text.length; - - // Подсчет байт const byteCount = new TextEncoder().encode(text).length; - - // Подсчет escape-последовательностей const escapes = ["%{DOL}%", "%ESCAPED%", "\\]", "\\;", "%{-SEMICOL-}%"]; let escapesCount = 0; escapes.forEach(escape => { @@ -218,15 +209,16 @@ function updateStats() { escapesCount += count; }); - // Обновление элементов на странице + const specialChars = text.replace(/[\w\s]/g, "").length; + document.getElementById("wordCount").textContent = wordCount; document.getElementById("spaceCount").textContent = spaceCount; document.getElementById("lineCount").textContent = lineCount; document.getElementById("charCount").textContent = charCount; document.getElementById("byteCount").textContent = byteCount; document.getElementById("escapesCount").textContent = escapesCount; -} - + document.getElementById("specialChars").textContent = specialChars; +} function replaceText() { const searchText = document.getElementById("searchText").value; From 82f71ddb1476c984916a1428031a6606a0dc7159 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 18 Aug 2025 23:23:53 +0300 Subject: [PATCH 0081/1179] Update editor.md --- src/tools/editor.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index ab7cbf430c6..931d58012b8 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,4 +1,4 @@ -# Text Editor 20 +# Text Editor Here you can use the basic editor features to write codes more conveniently.
@@ -24,6 +24,7 @@ Here you can use the basic editor features to write codes more conveniently.

[0

]0

Escaped Characters: 0

+

Special Characters: 0

From e45f3081d0f69054323f879f61f32c6b4c8e7a77 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 11:39:23 +0300 Subject: [PATCH 0082/1179] Update editor.md --- src/tools/editor.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 931d58012b8..b88eed7a09b 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -9,8 +9,14 @@ Here you can use the basic editor features to write codes more conveniently.

Bytes: 0

-

-
+ +
+

Name

+ +

+
+
+

From 5042a2eee1dd7b986f1619ce38b6537a7a1a9fa8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 11:51:19 +0300 Subject: [PATCH 0083/1179] Update editor.md --- src/tools/editor.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index b88eed7a09b..0748ccb2b43 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -15,6 +15,7 @@ Here you can use the basic editor features to write codes more conveniently.


+
From 9e7639f1e1496dea4ed49ab6bb907848a0b9f184 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 11:53:51 +0300 Subject: [PATCH 0084/1179] Update playground.js --- src/theme/playground.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 37355222198..53741f22fda 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -425,4 +425,26 @@ function copyText() { } window.getSelection().removeAllRanges(); +} + +function saveFile() { + const fileName = document.getElementById('name').value; + const fileContent = document.getElementById('editor').value; + + if (!fileName) { + document.getElementById('error-message').textContent = "Пожалуйста, введите имя файла."; + return; + } else { + document.getElementById('error-message').textContent = ""; + } + + const blob = new Blob([fileContent], { type: 'text/plain' }); + const a = document.createElement('a'); + const url = URL.createObjectURL(blob); + a.href = url; + a.download = fileName + '.txt'; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); } \ No newline at end of file From b9eaf2f4cedb7b8a06746253510db5372d0b89a6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 12:03:42 +0300 Subject: [PATCH 0085/1179] Update playground.js --- src/theme/playground.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 53741f22fda..56b5801dff4 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -429,22 +429,19 @@ function copyText() { function saveFile() { const fileName = document.getElementById('name').value; + const finalFileName = fileName || "bdfdwikieditor"; const fileContent = document.getElementById('editor').value; - if (!fileName) { - document.getElementById('error-message').textContent = "Пожалуйста, введите имя файла."; - return; - } else { - document.getElementById('error-message').textContent = ""; - } - const blob = new Blob([fileContent], { type: 'text/plain' }); const a = document.createElement('a'); const url = URL.createObjectURL(blob); - a.href = url; - a.download = fileName + '.txt'; + + a.href = url; + a.download = finalFileName + '.txt'; + document.body.appendChild(a); a.click(); document.body.removeChild(a); + URL.revokeObjectURL(url); } \ No newline at end of file From 7eb5c8217fd143d4aa192324bede8625d96a1b97 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 13:56:35 +0300 Subject: [PATCH 0086/1179] Update editor.md --- src/tools/editor.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index 0748ccb2b43..d0cc0f4281a 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -35,3 +35,10 @@ Here you can use the basic editor features to write codes more conveniently.
+ +
+

Tips

+

**

+

*

+

`

+
From 18d165a795c9766891e8e400ed9ca84d8ebb3129 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 18:44:16 +0300 Subject: [PATCH 0087/1179] Update chrome.css --- src/theme/css/chrome.css | 108 ++++++++++++++++++++++----------------- 1 file changed, 61 insertions(+), 47 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 63b90e9aaba..f0f4b50a593 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1041,9 +1041,8 @@ ul#searchresults span.teaser em { align-items: center; } -#editor { +#editor, #name { width: 96%; - height: 40rem; font-size: 1.5rem; min-height: 1.3rem; max-height: 100em; @@ -1053,12 +1052,26 @@ ul#searchresults span.teaser em { background: hsl(0deg 0% 100% / 7%); padding: 7px; font-size: 1.5rem; - resize: vertical; margin: -2rem auto; display: block; outline: none; } +#editor { + height: 40rem; + resize: vertical; +} + +#name { + white-space: nowrap; + overflow: auto; + scrollbar-width: none; + -ms-overflow-style: none; + height: 1.7rem; + margin-bottom: 2rem; + margin-top: -1rem; + resize: none; +} #text-editorui { margin-top: 1rem; @@ -1117,10 +1130,10 @@ ul#searchresults span.teaser em { #highlightedText span { color: var(--color1); } - -#highlightedText a { - color: white !important; -} + +#highlightedText a { + color: white !important; +} #highlightedText { color: #bbb; @@ -1145,43 +1158,44 @@ ul#searchresults span.teaser em { border-right-style: solid; display: inline-block; width: 4.2rem; - margin-right: 1rem; - white-space: nowrap; - -webkit-user-select: none; - user-select: none; -} - -.channel, .mention { - border-radius: 5px; - color: hsl(0deg 0% 100% / 50%) !important; - background-color: hsl(0deg 0% 100% / 10%) !important; - font-weight: bold; - padding: 2px; -} - -.timestamp { - color: #bbb !important; - background-color: hsl(0deg 0% 100% / 5%) !important; -} - -.hg-code { - border-radius: 5px; - border-width: 2px; - border-style: solid; - border-color: hsl(0deg 0% 100% / 10%) !important; - color: hsl(0deg 0% 100% / 40%) !important; - background-color: hsl(0deg 0% 100% / 5%) !important; - padding: 1px; - display: inline-block; -} - -.close-btn { - background-color: hsl(0deg 0% 100% / 25%); - color: red ! important; - padding: 5px 10px 5px 10px; - width: 25px; - border-radius: 60px; - border-color: hsl(0deg 0% 100% / 30%); - border-style: solid; - border-width: 1px; -} \ No newline at end of file + margin-right: 1rem; + white-space: nowrap; + -webkit-user-select: none; + user-select: none; +} + +.channel, .mention { + border-radius: 5px; + color: hsl(0deg 0% 100% / 50%) !important; + background-color: hsl(0deg 0% 100% / 10%) !important; + font-weight: bold; + padding: 2px; +} + +.timestamp { + color: #bbb !important; + background-color: hsl(0deg 0% 100% / 5%) !important; +} + +.hg-code { + border-radius: 5px; + border-width: 2px; + border-style: solid; + border-color: hsl(0deg 0% 100% / 10%) !important; + color: hsl(0deg 0% 100% / 40%) !important; + background-color: hsl(0deg 0% 100% / 5%) !important; + padding: 1px; + display: inline-block; +} + + +.close-btn { + background-color: hsl(0deg 0% 100% / 25%); + color: red ! important; + padding: 5px 10px 5px 10px; + width: 25px; + border-radius: 60px; + border-color: hsl(0deg 0% 100% / 30%); + border-style: solid; + border-width: 1px; +} From 4f943d687a19530227f92700a9d4297196ce770b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 18:47:20 +0300 Subject: [PATCH 0088/1179] Update chrome.css --- src/theme/css/chrome.css | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index f0f4b50a593..8b8352e17a7 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1190,12 +1190,14 @@ ul#searchresults span.teaser em { .close-btn { - background-color: hsl(0deg 0% 100% / 25%); - color: red ! important; - padding: 5px 10px 5px 10px; + background-color: hsl(0deg 0% 100% / 10%); + color: hsl(0deg 0% 100% / 75%); ! important; + padding: 1px 7px; width: 25px; + cursor: pointer; border-radius: 60px; - border-color: hsl(0deg 0% 100% / 30%); + border-color: hsl(0deg 0% 100% / 15%); border-style: solid; border-width: 1px; } + From a00b028c8c693f526ea24c4367848927c003e098 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 18:48:58 +0300 Subject: [PATCH 0089/1179] Update index.js --- src/theme/settings/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/settings/index.js b/src/theme/settings/index.js index 342938f0bb9..bb2514853bd 100644 --- a/src/theme/settings/index.js +++ b/src/theme/settings/index.js @@ -237,7 +237,7 @@ function setStatusBar(HueInput) { document .querySelector('meta[name="theme-color"]') .setAttribute("content", `#000`); - } else if (HueInput) == "light") { + } else if (HueInput == "light") { document .querySelector('meta[name="theme-color"]') .setAttribute("content", `#fff`); From ec3ee851325da12847d196db2f953e10c32ac181 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 18:50:38 +0300 Subject: [PATCH 0090/1179] Update editor.md --- src/tools/editor.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index d0cc0f4281a..e1b55456dbd 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -4,18 +4,20 @@ Here you can use the basic editor features to write codes more conveniently.

Words: 0

Spaces: 0

-

Lines: 0

-

Characters: 0

+

Lines: 0

+

Characters: 0

Bytes: 0

-

Name

-

-
- +

+
+
+ +
+
From cbf9a98453df86cb3d45586c1125a2163beb1e5a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 18:58:15 +0300 Subject: [PATCH 0091/1179] Update chrome.css --- src/theme/css/chrome.css | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 8b8352e17a7..7cf234538b1 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1201,3 +1201,17 @@ ul#searchresults span.teaser em { border-width: 1px; } +.scriptdiv { + position: relative; +} + +.scriptdiv button { + position: absolute; + top: .5rem; + right: .7rem; + background-color: hsl(0deg 0% 100% / 10%); + border-radius: 10px; + border: none; + display: inline-block; + cursor: pointer; +} From dbe2be7b5587f3f5d684202fa21944ee056cc02f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 19:06:18 +0300 Subject: [PATCH 0092/1179] Update chrome.css --- src/theme/css/chrome.css | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 7cf234538b1..f475f131dc9 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1205,13 +1205,35 @@ ul#searchresults span.teaser em { position: relative; } +.scriptdiv button:hover { + color: var(--color1); + border-color: var(--color1); + border-radius: 9px; + opacity: 0.9; + transition: 0.2s; +} + .scriptdiv button { - position: absolute; - top: .5rem; - right: .7rem; - background-color: hsl(0deg 0% 100% / 10%); - border-radius: 10px; - border: none; - display: inline-block; - cursor: pointer; + position: absolute; + top: 0; + right: 0; + user-select: none; + -webkit-user-select: none; + touch-action: manipulation; + outline: none; + color: #fff; + margin: 1.5px 5px; + padding: 5px; + cursor: pointer; + width: 3.2rem; + height: 3.2rem; + font-size: 1.5rem; + border-style: solid; + border-width: 1px; + border-radius: 10px; + border-color: #aeaeae; + background: rgb(255 255 255 / 10%); + opacity: 0.8; + transition: 0.2s; } + From 8d0c03e27d699866e628b6a7b1e270e35b394fc2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 19:08:37 +0300 Subject: [PATCH 0093/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index e1b55456dbd..69349ac92c4 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -15,7 +15,7 @@ Here you can use the basic editor features to write codes more conveniently.


- +
From 90884e1b11a07e77abe9b5b73ca45839bb3847ac Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 19:10:58 +0300 Subject: [PATCH 0094/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 69349ac92c4..d15e58a4767 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -15,7 +15,7 @@ Here you can use the basic editor features to write codes more conveniently.


- +
From 1d12618ae88b416726afd799aa3439aa429603b9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 19:44:48 +0300 Subject: [PATCH 0095/1179] Update playground.js --- src/theme/playground.js | 503 ++++++++++++++++++++-------------------- 1 file changed, 251 insertions(+), 252 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 56b5801dff4..6c39ebf5698 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -181,43 +181,43 @@ function editInputHeight() { } // Editor tools -function updateStats() { - const text = document.getElementById("editor").value; - - const words = text.trim().split(/\s+/).filter(word => word !== ""); - const wordCount = words.length; - - let spaceCount = 0; - for (let i = 0; i < text.length; i++) { - if (text[i] === ' ') { - spaceCount++; - } - } - - const lineCount = text.split('\n').length; - const charCount = text.length; - const byteCount = new TextEncoder().encode(text).length; - const escapes = ["%{DOL}%", "%ESCAPED%", "\\]", "\\;", "%{-SEMICOL-}%"]; - let escapesCount = 0; - escapes.forEach(escape => { - let count = 0; - let position = text.indexOf(escape); - while (position !== -1) { - count++; - position = text.indexOf(escape, position + escape.length); - } - escapesCount += count; - }); - - const specialChars = text.replace(/[\w\s]/g, "").length; - - document.getElementById("wordCount").textContent = wordCount; - document.getElementById("spaceCount").textContent = spaceCount; - document.getElementById("lineCount").textContent = lineCount; - document.getElementById("charCount").textContent = charCount; - document.getElementById("byteCount").textContent = byteCount; - document.getElementById("escapesCount").textContent = escapesCount; - document.getElementById("specialChars").textContent = specialChars; +function updateStats() { + const text = document.getElementById("editor").value; + + const words = text.trim().split(/\s+/).filter(word => word !== ""); + const wordCount = words.length; + + let spaceCount = 0; + for (let i = 0; i < text.length; i++) { + if (text[i] === ' ') { + spaceCount++; + } + } + + const lineCount = text.split('\n').length; + const charCount = text.length; + const byteCount = new TextEncoder().encode(text).length; + const escapes = ["%{DOL}%", "%ESCAPED%", "\\]", "\\;", "%{-SEMICOL-}%"]; + let escapesCount = 0; + escapes.forEach(escape => { + let count = 0; + let position = text.indexOf(escape); + while (position !== -1) { + count++; + position = text.indexOf(escape, position + escape.length); + } + escapesCount += count; + }); + + const specialChars = text.replace(/[\w\s]/g, "").length; + + document.getElementById("wordCount").textContent = wordCount; + document.getElementById("spaceCount").textContent = spaceCount; + document.getElementById("lineCount").textContent = lineCount; + document.getElementById("charCount").textContent = charCount; + document.getElementById("byteCount").textContent = byteCount; + document.getElementById("escapesCount").textContent = escapesCount; + document.getElementById("specialChars").textContent = specialChars; } function replaceText() { @@ -229,219 +229,218 @@ function replaceText() { checkBrackets(); } - -function checkBrackets() { - const text = document.getElementById("editor").value; // Получаем текст из поля ввода - const textBytes = new TextEncoder().encode(text).length; // Считаем размер текста в байтах - let dollarCount = 0; // Счетчик знаков доллара - let openBrackets = 0; // Счетчик открывающих скобок - let closeBrackets = 0; // Счетчик закрывающих скобок - const errors = []; // Массив для хранения ошибок - - if (textBytes > 65000) { - errors.push({ message: "Text exceeds the allowed size (65000 bytes).", id: errors.length }); - } - - if (text.indexOf('$') === -1 && text.length > 2000) { - errors.push({ message: "Character limit exceeded (2000) for messages without $.", id: errors.length }); - } - - const lines = text.split('\n'); // Разбиваем текст на строки - for (let i = 0; i < lines.length; i++) { // Перебираем строки - const line = lines[i]; - for (let j = 0; j < line.length; j++) { // Перебираем символы в строке - if (line[j] === '$') { - if (j + 1 < line.length && /[a-zA-Z]/.test(line[j + 1])) { - dollarCount++; - } - } else if (line[j] === '[') { - openBrackets++; - if (j + 1 < line.length && line[j + 1] === ']') { - errors.push({ message: `Empty brackets [] detected on line ${i + 1}.`, id: errors.length }); // Добавляем номер строки в сообщение об ошибке - } - } else if (line[j] === ']' && (j === 0 || line[j - 1] !== '\\')) { - closeBrackets++; - } - } - } - - document.getElementById("openCount").textContent = openBrackets; - document.getElementById("closeCount").textContent = closeBrackets; - - const errorMessageElement = document.getElementById("error-message"); - errorMessageElement.innerHTML = ""; - - if (openBrackets <= dollarCount) { - if (closeBrackets < openBrackets) { - errors.push({ message: "Not all open brackets are closed.", id: errors.length }); - } - } - - if (errors.length > 0) { - errorMessageElement.style.color = "red"; // Цвет по умолчанию - красный - - errors.forEach(error => { - const errorDiv = document.createElement("div"); - errorDiv.style.display = "block"; - - // Проверяем текст ошибки, чтобы применить оранжевый цвет - if (error.message.includes("Empty brackets") || error.message.includes("Character limit exceeded")) { - errorDiv.style.color = "orange"; // Устанавливаем оранжевый цвет - } - - errorDiv.innerHTML = `${error.message} ×`; - errorMessageElement.appendChild(errorDiv); - }); - - errorMessageElement.addEventListener("click", function(event) { - if (event.target.classList.contains("close-btn")) { - const errorDiv = event.target.parentNode; - errorDiv.remove(); - } - }); - } else { - errorMessageElement.textContent = ""; - errorMessageElement.style.color = "black"; - } + +function checkBrackets() { + const text = document.getElementById("editor").value; + const textBytes = new TextEncoder().encode(text).length; + let dollarCount = 0; + let openBrackets = 0; + let closeBrackets = 0; + const errors = []; + + if (textBytes > 65000) { + errors.push({ message: "Text exceeds the allowed size (65000 bytes).", id: errors.length }); + } + + if (text.indexOf('$') === -1 && text.length > 2000) { + errors.push({ message: "Character limit exceeded (2000) for messages without $.", id: errors.length }); + } + + const lines = text.split('\n'); + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + for (let j = 0; j < line.length; j++) { + if (line[j] === '$') { + if (j + 1 < line.length && /[a-zA-Z]/.test(line[j + 1])) { + dollarCount++; + } + } else if (line[j] === '[') { + openBrackets++; + if (j + 1 < line.length && line[j + 1] === ']') { + errors.push({ message: `Empty brackets [] detected on line ${i + 1}.`, id: errors.length }); + } + } else if (line[j] === ']' && (j === 0 || line[j - 1] !== '\\')) { + closeBrackets++; + } + } + } + + document.getElementById("openCount").textContent = openBrackets; + document.getElementById("closeCount").textContent = closeBrackets; + + const errorMessageElement = document.getElementById("error-message"); + errorMessageElement.innerHTML = ""; + + if (openBrackets <= dollarCount) { + if (closeBrackets < openBrackets) { + errors.push({ message: "Not all open brackets are closed.", id: errors.length }); + } + } + + if (errors.length > 0) { + errorMessageElement.style.color = "red"; + + errors.forEach(error => { + const errorDiv = document.createElement("div"); + errorDiv.style.display = "block"; + + if (error.message.includes("Empty brackets") || error.message.includes("Character limit exceeded")) { + errorDiv.style.color = "orange"; + } + + errorDiv.innerHTML = `${error.message} ×`; + errorMessageElement.appendChild(errorDiv); + }); + + errorMessageElement.addEventListener("click", function(event) { + if (event.target.classList.contains("close-btn")) { + const errorDiv = event.target.parentNode; + errorDiv.remove(); + } + }); + } else { + errorMessageElement.textContent = ""; + errorMessageElement.style.color = "black"; + } +} + + +function toggleHighlight() { + const highlightedTextDiv = document.getElementById("highlightedText"); + const text = document.getElementById("editor").value; + const searchText = document.getElementById("searchText").value; + let highlighted = text; + let matches = 0; + + if (searchText) { + const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const regex = new RegExp(escapedSearchText, 'gi'); + + highlighted = text.replace(regex, (match) => { + matches++; + return `${match}`; + }); + } + + // Подсветка <@…> и <#…>, убираем скобки + const mentionRegex = /<@(.*?)>/g; + highlighted = highlighted.replace(mentionRegex, (match, content) => { + return `@${content}`; + }); + + const channelRegex = /<#(.*?)>/g; + highlighted = highlighted.replace(channelRegex, (match, content) => { + return `#${content}`; + }); + + // Обработка жирного текста: **текст** -> текст + const boldRegex = /\*\*(.*?)\*\*/g; + highlighted = highlighted.replace(boldRegex, (match, content) => { + return `${content}`; + }); + + // Обработка курсива: *текст* -> текст + const italicRegex = /\*(.*?)\*/g; + highlighted = highlighted.replace(italicRegex, (match, content) => { + return `${content}`; + }); + + // Обработка кода: `текст` ->

текст

+ const codeRegex = /`(.*?)`/g; + highlighted = highlighted.replace(codeRegex, (match, content) => { + return `

${content}

`; + }); + + // Преобразование ссылок: автоматически распознает и создает теги + const linkRegex = /(https?:\/\/[^\s]+)/g; + highlighted = highlighted.replace(linkRegex, (url) => { + return `${url}`; + }); + + // Обработка timestamp меток + const timestampRegex = //g; + highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { + const date = new Date(parseInt(timestamp) * 1000); // Преобразуем в миллисекунды + let formattedDate = ""; + + switch (format) { + case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; + case 'd': formattedDate = date.toLocaleDateString(); break; + case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; + case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'R': formattedDate = getRelativeTime(date); break; // Функция для относительного времени (см. ниже) + default: formattedDate = "Invalid format"; + } + return `${formattedDate}`; // Оборачиваем в span + }); + + // Добавление номеров строк + const lines = highlighted.split('\n'); + let numberedText = ""; + for (let i = 0; i < lines.length; i++) { + numberedText += `${i + 1} ${lines[i]}
`; + } + + const resultsString = `

Results: ${matches}

`; + highlightedTextDiv.innerHTML = resultsString + numberedText; +} + +// Функция для получения относительного времени (например, "5 minutes ago") +function getRelativeTime(date) { + const now = new Date(); + const diffInSeconds = Math.round((now - date) / 1000); + + const intervals = { + 'year': 31536000, + 'month': 2592000, + 'day': 86400, + 'hour': 3600, + 'minute': 60, + 'second': 1 + }; + + for (const interval in intervals) { + const secondsInInterval = intervals[interval]; + const quantity = Math.floor(diffInSeconds / secondsInInterval); + + if (quantity >= 1) { + return quantity + ' ' + interval + (quantity > 1 ? 's' : '') + ' ago'; + } + } + + return 'Just now'; +} + +function copyText() { + const textarea = document.getElementById("editor"); + textarea.select(); + + try { + document.execCommand("copy"); + } catch (err) { + console.error("Unable to copy text: ", err); + } + + window.getSelection().removeAllRanges(); +} + +function saveFile() { + const fileName = document.getElementById('name').value; + const finalFileName = fileName || "bdfdwikieditor"; + const fileContent = document.getElementById('editor').value; + + const blob = new Blob([fileContent], { type: 'text/plain' }); + const a = document.createElement('a'); + const url = URL.createObjectURL(blob); + + a.href = url; + a.download = finalFileName + '.txt'; + + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + + URL.revokeObjectURL(url); } - -function toggleHighlight() { - const highlightedTextDiv = document.getElementById("highlightedText"); - const text = document.getElementById("editor").value; - const searchText = document.getElementById("searchText").value; - let highlighted = text; - let matches = 0; - - // Подсветка по поисковому запросу - if (searchText) { - const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const regex = new RegExp(escapedSearchText, 'gi'); - - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } - - // Подсветка <@…> и <#…>, убираем скобки - const mentionRegex = /<@(.*?)>/g; - highlighted = highlighted.replace(mentionRegex, (match, content) => { - return `@${content}`; - }); - - const channelRegex = /<#(.*?)>/g; - highlighted = highlighted.replace(channelRegex, (match, content) => { - return `#${content}`; - }); - - // Обработка жирного текста: **текст** -> текст - const boldRegex = /\*\*(.*?)\*\*/g; - highlighted = highlighted.replace(boldRegex, (match, content) => { - return `${content}`; - }); - - // Обработка курсива: *текст* -> текст - const italicRegex = /\*(.*?)\*/g; - highlighted = highlighted.replace(italicRegex, (match, content) => { - return `${content}`; - }); - - // Обработка кода: `текст` ->

текст

- const codeRegex = /`(.*?)`/g; - highlighted = highlighted.replace(codeRegex, (match, content) => { - return `

${content}

`; - }); - - // Преобразование ссылок: автоматически распознает и создает теги - const linkRegex = /(https?:\/\/[^\s]+)/g; - highlighted = highlighted.replace(linkRegex, (url) => { - return `${url}`; - }); - - // Обработка timestamp меток - const timestampRegex = //g; - highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { - const date = new Date(parseInt(timestamp) * 1000); // Преобразуем в миллисекунды - let formattedDate = ""; - - switch (format) { - case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; - case 'd': formattedDate = date.toLocaleDateString(); break; - case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; - case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'R': formattedDate = getRelativeTime(date); break; // Функция для относительного времени (см. ниже) - default: formattedDate = "Invalid format"; - } - return `${formattedDate}`; // Оборачиваем в span - }); - - // Добавление номеров строк - const lines = highlighted.split('\n'); - let numberedText = ""; - for (let i = 0; i < lines.length; i++) { - numberedText += `${i + 1} ${lines[i]}
`; - } - - const resultsString = `

Results: ${matches}

`; - highlightedTextDiv.innerHTML = resultsString + numberedText; -} - -// Функция для получения относительного времени (например, "5 minutes ago") -function getRelativeTime(date) { - const now = new Date(); - const diffInSeconds = Math.round((now - date) / 1000); - - const intervals = { - 'year': 31536000, - 'month': 2592000, - 'day': 86400, - 'hour': 3600, - 'minute': 60, - 'second': 1 - }; - - for (const interval in intervals) { - const secondsInInterval = intervals[interval]; - const quantity = Math.floor(diffInSeconds / secondsInInterval); - - if (quantity >= 1) { - return quantity + ' ' + interval + (quantity > 1 ? 's' : '') + ' ago'; - } - } - - return 'Just now'; -} - -function copyText() { - const textarea = document.getElementById("editor"); - textarea.select(); - - try { - document.execCommand("copy"); - } catch (err) { - console.error("Unable to copy text: ", err); - } - - window.getSelection().removeAllRanges(); -} - -function saveFile() { - const fileName = document.getElementById('name').value; - const finalFileName = fileName || "bdfdwikieditor"; - const fileContent = document.getElementById('editor').value; - - const blob = new Blob([fileContent], { type: 'text/plain' }); - const a = document.createElement('a'); - const url = URL.createObjectURL(blob); - - a.href = url; - a.download = finalFileName + '.txt'; - - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - - URL.revokeObjectURL(url); -} \ No newline at end of file From f2f35b3aba712b529163db3e13e5d56d921500ee Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 20:06:51 +0300 Subject: [PATCH 0096/1179] Update chrome.css --- src/theme/css/chrome.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index f475f131dc9..df5fc849a3f 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1237,3 +1237,7 @@ ul#searchresults span.teaser em { transition: 0.2s; } +#error-message { + display: block !important; + text-align: center; +} From 4736e99239696d25a4b9b15a5b51bb515f48e6b8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 19 Aug 2025 20:28:50 +0300 Subject: [PATCH 0097/1179] Update chrome.css --- src/theme/css/chrome.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index df5fc849a3f..399ea8123f5 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1215,8 +1215,8 @@ ul#searchresults span.teaser em { .scriptdiv button { position: absolute; - top: 0; - right: 0; + top: .3rem; + right: .3rem; user-select: none; -webkit-user-select: none; touch-action: manipulation; @@ -1241,3 +1241,4 @@ ul#searchresults span.teaser em { display: block !important; text-align: center; } + From 08524fd281cc7cf230c4422108d8f09177a296a3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 20 Aug 2025 12:14:26 +0300 Subject: [PATCH 0098/1179] Update chrome.css --- src/theme/css/chrome.css | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 399ea8123f5..b8d45264c87 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1188,15 +1188,19 @@ ul#searchresults span.teaser em { display: inline-block; } - .close-btn { - background-color: hsl(0deg 0% 100% / 10%); + transition: .3s; color: hsl(0deg 0% 100% / 75%); ! important; padding: 1px 7px; + border-color: hsl(0deg 0% 100% / 15%); width: 25px; - cursor: pointer; border-radius: 60px; - border-color: hsl(0deg 0% 100% / 15%); + cursor: pointer; +} + +.close-btn:hover { + transition: .3s; + background-color: hsl(0deg 0% 100% / 10%); border-style: solid; border-width: 1px; } @@ -1242,3 +1246,4 @@ ul#searchresults span.teaser em { text-align: center; } + From 05eb5aa5448ca3658b41f61f3a7c70e472437b0b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 20 Aug 2025 12:15:14 +0300 Subject: [PATCH 0099/1179] Update editor.md --- src/tools/editor.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index d15e58a4767..fb1cfcf44a9 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -20,6 +20,13 @@ Here you can use the basic editor features to write codes more conveniently.
+
+

[0

+

]0

+

Escaped Characters: 0

+

Special Characters: 0

+
+

@@ -29,13 +36,6 @@ Here you can use the basic editor features to write codes more conveniently.
-
-

[0

-

]0

-

Escaped Characters: 0

-

Special Characters: 0

-
-
From 872029f427c3c8bcc53d5f4218cc957e657efbce Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 20 Aug 2025 12:23:05 +0300 Subject: [PATCH 0100/1179] Update playground.js --- src/theme/playground.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 6c39ebf5698..6b319113384 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -229,21 +229,20 @@ function replaceText() { checkBrackets(); } - function checkBrackets() { const text = document.getElementById("editor").value; - const textBytes = new TextEncoder().encode(text).length; + const textBytes = new TextEncoder().encode(text).length; let dollarCount = 0; let openBrackets = 0; let closeBrackets = 0; const errors = []; - if (textBytes > 65000) { - errors.push({ message: "Text exceeds the allowed size (65000 bytes).", id: errors.length }); + if (textBytes > 65536) { + errors.push({ message: "Error: Text exceeds the allowed size (65536 bytes).", id: errors.length }); } if (text.indexOf('$') === -1 && text.length > 2000) { - errors.push({ message: "Character limit exceeded (2000) for messages without $.", id: errors.length }); + errors.push({ message: "Warning: Character limit exceeded (2000) for messages without functions.", id: errors.length }); } const lines = text.split('\n'); @@ -257,7 +256,7 @@ function checkBrackets() { } else if (line[j] === '[') { openBrackets++; if (j + 1 < line.length && line[j + 1] === ']') { - errors.push({ message: `Empty brackets [] detected on line ${i + 1}.`, id: errors.length }); + errors.push({ message: `Warning: Empty brackets [] detected on line ${i + 1}.`, id: errors.length }); } } else if (line[j] === ']' && (j === 0 || line[j - 1] !== '\\')) { closeBrackets++; @@ -273,7 +272,7 @@ function checkBrackets() { if (openBrackets <= dollarCount) { if (closeBrackets < openBrackets) { - errors.push({ message: "Not all open brackets are closed.", id: errors.length }); + errors.push({ message: "Error: Not all open brackets are closed.", id: errors.length }); } } @@ -284,7 +283,7 @@ function checkBrackets() { const errorDiv = document.createElement("div"); errorDiv.style.display = "block"; - if (error.message.includes("Empty brackets") || error.message.includes("Character limit exceeded")) { + if (error.message.includes("Warning:")) { errorDiv.style.color = "orange"; } @@ -298,6 +297,15 @@ function checkBrackets() { errorDiv.remove(); } }); + + if (errors.length > 3) { + const closeAllButton = document.createElement("button"); + closeAllButton.textContent = "Close All"; + closeAllButton.addEventListener("click", function() { + errorMessageElement.innerHTML = ""; + }); + errorMessageElement.appendChild(closeAllButton); + } } else { errorMessageElement.textContent = ""; errorMessageElement.style.color = "black"; @@ -444,3 +452,4 @@ function saveFile() { URL.revokeObjectURL(url); } + From c415808dd147a5684ebec45aca3e6d4718132354 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 21 Aug 2025 08:49:27 +0300 Subject: [PATCH 0101/1179] Update editor.md --- src/tools/editor.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index fb1cfcf44a9..9dbe61688ea 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -15,9 +15,9 @@ Here you can use the basic editor features to write codes more conveniently.


- -
- + + +
From 3ba13c96edaaa16e1366204477ad8e1e696f0845 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 21 Aug 2025 08:52:45 +0300 Subject: [PATCH 0102/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 9dbe61688ea..ed503ecb9d5 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -11,7 +11,7 @@ Here you can use the basic editor features to write codes more conveniently.

Name

- +


From f74ce9ee8b26d97b069b3cc24bd244b8136e5256 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 21 Aug 2025 08:53:10 +0300 Subject: [PATCH 0103/1179] Update playground.js --- src/theme/playground.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 6b319113384..eb86a88e31b 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -452,4 +452,13 @@ function saveFile() { URL.revokeObjectURL(url); } - + +function nameScript() { + const textarea = document.getElementById('name'); + + textarea.value = textarea.value.replace(/[\r\n]+/g, ''); + + if (textarea.value.length > 30) { + textarea.value = textarea.value.substring(0, 30); + } +} \ No newline at end of file From f9fc8f676622cb5f71d5963f2e679d1107b6ca24 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 21 Aug 2025 18:13:09 +0300 Subject: [PATCH 0104/1179] Update chrome.css --- src/theme/css/chrome.css | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index b8d45264c87..94d67c4acc1 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1246,4 +1246,24 @@ ul#searchresults span.teaser em { text-align: center; } +#error-message button { + transition: .4s; + display: inline-block; + margin-right: 7.5px; + background-color: var(--color3); + padding: 1rem; + color: hsl(0deg 0% 100% / 70%);; + font-size: 1.5rem; + border-radius: 10px; + border: none; + border-width: .1px; + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); +} + +#error-message button:hover { + transition: .4s; + color: var(--color1); + border-style: solid; +} + From e02cf7e5cd42703dc77800729edcaf49c30d0506 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 21 Aug 2025 23:31:12 +0300 Subject: [PATCH 0105/1179] Update editor.md --- src/tools/editor.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index ed503ecb9d5..9d2cb10952f 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -12,6 +12,17 @@ Here you can use the basic editor features to write codes more conveniently.

Name

+ +


From 7b170216b372cf1ca4c4cae9feec70d4309317db Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 22 Aug 2025 12:19:32 +0300 Subject: [PATCH 0106/1179] Update pinMessage.md --- src/bdscript/pinMessage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/pinMessage.md b/src/bdscript/pinMessage.md index 433d64e46e0..fb274504a27 100644 --- a/src/bdscript/pinMessage.md +++ b/src/bdscript/pinMessage.md @@ -1,7 +1,7 @@ # $pinMessage Pins the bot's response message in the current channel. -> ⚠️ A channel can have a maximum of 50 pinned messages. +> ⚠️ A channel can have a maximum of 250 pinned messages. ## Syntax ``` From f5c6fd18ccf3e5e22439949d61aa354af0650437 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 22 Aug 2025 12:19:47 +0300 Subject: [PATCH 0107/1179] Update pinMessageComplex.md --- src/bdscript/pinMessageComplex.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/pinMessageComplex.md b/src/bdscript/pinMessageComplex.md index 35bdc079746..59b4e28c715 100644 --- a/src/bdscript/pinMessageComplex.md +++ b/src/bdscript/pinMessageComplex.md @@ -1,7 +1,7 @@ # $pinMessage[] Pins a specific message using its channel and message ID. -> ⚠️ A channel can have a maximum of 50 pinned messages. +> ⚠️ A channel can have a maximum of 250 pinned messages. ## Syntax ``` From 0583dab2393af5164f6e741b37d6cf1449c5aa62 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:04:35 +0300 Subject: [PATCH 0108/1179] Update editor.md --- src/tools/editor.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 9d2cb10952f..4f2bfd81d1a 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -11,8 +11,8 @@ Here you can use the basic editor features to write codes more conveniently.

Name

- - + - + 0/32 +
+ - 0/32 + 0/50

+


From dc64039fd65c47e6232531096f836e9b8451a61e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 24 Aug 2025 18:26:54 +0300 Subject: [PATCH 0135/1179] Update playground.js --- src/theme/playground.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index cdbea16d4ca..55d6b85f4c3 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -605,7 +605,7 @@ function typeScript() { } function autocomplete() { - if (window.location.href.includes("editor")) { + if (2 > 1) { const sectionList = document.querySelector('ol.section'); if (!sectionList) { @@ -659,3 +659,4 @@ function autocomplete() { } autocomplete(); + From d7df0008e13d2eb96f78ecc9a3717d7a4fe72175 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 24 Aug 2025 18:34:21 +0300 Subject: [PATCH 0136/1179] Update playground.js --- src/theme/playground.js | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 55d6b85f4c3..ae67fb5617a 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -605,38 +605,50 @@ function typeScript() { } function autocomplete() { + //Убедимся, что условие всегда выполняется if (2 > 1) { + // Получаем ссылку на список функций const sectionList = document.querySelector('ol.section'); + // Проверяем, что список функций существует в DOM if (!sectionList) { console.error("Не найден элемент
    ."); - return; + return; // Прерываем выполнение, если список не найден } + // Извлекаем HTML-код списка функций const html = sectionList.innerHTML; + // Извлекаем имена функций (текст ссылок, начинающихся с "$") const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) .map(a => a.textContent) .filter(text => text.startsWith('$')); + // Получаем ссылку на текстовое поле и область для автокомплита const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); + // Добавляем обработчик события ввода в текстовое поле textarea.addEventListener('input', function (event) { const inputText = event.target.value; const cursorPosition = textarea.selectionStart; let searchTerm = ''; + // Находим индекс последнего символа "$" перед курсором let dollarIndex = inputText.lastIndexOf('$', cursorPosition); + // Если символ "$" не найден, очищаем область автокомплита и выходим if (dollarIndex === -1) { autocompleteOutput.innerHTML = ''; return; } + // Извлекаем текст для поиска, начиная с символа "$" searchTerm = inputText.substring(dollarIndex).toLowerCase(); autocompleteOutput.innerHTML = ''; + // Фильтруем функции, которые соответствуют поисковому запросу const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); + // Отображаем подходящие функции в области автокомплита matchingFunctions.forEach(func => { const span = document.createElement('span'); span.textContent = func; @@ -644,10 +656,15 @@ function autocomplete() { span.style.marginRight = '5px'; span.style.cursor = 'pointer'; + // Добавляем обработчик клика на функцию автокомплита span.addEventListener('click', function () { + // Заменяем текст от символа "$" до курсора выбранной функцией textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); + // Устанавливаем позицию курсора после вставленной функции textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; + // Очищаем область автокомплита autocompleteOutput.innerHTML = ''; + // Возвращаем фокус в текстовое поле textarea.focus(); }); @@ -658,5 +675,5 @@ function autocomplete() { } } -autocomplete(); - +// Вызываем функцию автокомплита после загрузки DOM +document.addEventListener('DOMContentLoaded', autocomplete); From b2c32a95a7d45c20bae66053b53448b73ce31887 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 08:27:47 +0300 Subject: [PATCH 0137/1179] Update playground.js --- src/theme/playground.js | 123 +++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 70 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index ae67fb5617a..886febc4094 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -428,10 +428,10 @@ function toggleHighlight() { return `${url}`; }); - // Unixtime + // Unixtime const timestampRegex = //g; highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { - const date = new Date(parseInt(timestamp) * 1000); // Преобразуем в миллисекунды + const date = new Date(parseInt(timestamp) * 1000); let formattedDate = ""; switch (format) { @@ -441,10 +441,10 @@ function toggleHighlight() { case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'R': formattedDate = getRelativeTime(date); break; // Функция для относительного времени (см. ниже) + case 'R': formattedDate = getRelativeTime(date); break; default: formattedDate = "Invalid format"; } - return `${formattedDate}`; // Оборачиваем в span + return `${formattedDate}`; }); // Lines @@ -604,76 +604,59 @@ function typeScript() { } } -function autocomplete() { - //Убедимся, что условие всегда выполняется - if (2 > 1) { - // Получаем ссылку на список функций - const sectionList = document.querySelector('ol.section'); +// Функция автозаполнения, срабатывающая после загрузки DOM +document.addEventListener('DOMContentLoaded', function() { - // Проверяем, что список функций существует в DOM - if (!sectionList) { - console.error("Не найден элемент
      ."); - return; // Прерываем выполнение, если список не найден - } - // Извлекаем HTML-код списка функций - const html = sectionList.innerHTML; - // Извлекаем имена функций (текст ссылок, начинающихся с "$") - const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) - .map(a => a.textContent) - .filter(text => text.startsWith('$')); - - // Получаем ссылку на текстовое поле и область для автокомплита - const textarea = document.getElementById('editor'); - const autocompleteOutput = document.getElementById('autocomplete'); - - // Добавляем обработчик события ввода в текстовое поле - textarea.addEventListener('input', function (event) { - const inputText = event.target.value; - const cursorPosition = textarea.selectionStart; - let searchTerm = ''; - - // Находим индекс последнего символа "$" перед курсором - let dollarIndex = inputText.lastIndexOf('$', cursorPosition); - - // Если символ "$" не найден, очищаем область автокомплита и выходим - if (dollarIndex === -1) { - autocompleteOutput.innerHTML = ''; - return; - } + // Получаем элемент
        , содержащий список функций + const sectionList = document.querySelector('ol.section'); - // Извлекаем текст для поиска, начиная с символа "$" - searchTerm = inputText.substring(dollarIndex).toLowerCase(); - autocompleteOutput.innerHTML = ''; + // Если элемент не найден, выводим сообщение об ошибке и прекращаем выполнение + if (!sectionList) { + console.error("Элемент
          не найден!"); + return; + } - // Фильтруем функции, которые соответствуют поисковому запросу - const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - - // Отображаем подходящие функции в области автокомплита - matchingFunctions.forEach(func => { - const span = document.createElement('span'); - span.textContent = func; - span.style.backgroundColor = 'lightgray'; - span.style.marginRight = '5px'; - span.style.cursor = 'pointer'; - - // Добавляем обработчик клика на функцию автокомплита - span.addEventListener('click', function () { - // Заменяем текст от символа "$" до курсора выбранной функцией - textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); - // Устанавливаем позицию курсора после вставленной функции - textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - // Очищаем область автокомплита - autocompleteOutput.innerHTML = ''; - // Возвращаем фокус в текстовое поле - textarea.focus(); - }); + // Извлекаем HTML содержимое sectionList и парсим его для поиска ссылок () + const functions = Array.from(new DOMParser().parseFromString(sectionList.innerHTML, 'text/html').querySelectorAll('a')) + .map(a => a.textContent) // Извлекаем текст из каждой ссылки + .filter(text => text.startsWith('$')); // Фильтруем функции, начинающиеся с "$" - autocompleteOutput.appendChild(span); - }); + // Получаем ссылку на текстовое поле (textarea) и контейнер для автозаполнения + const textarea = document.getElementById('editor'); + const autocompleteOutput = document.getElementById('autocomplete'); + // Добавляем обработчик события "input" к текстовому полю + textarea.addEventListener('input', function(event) { + const inputText = event.target.value; // Получаем текущий текст из textarea + const cursorPosition = textarea.selectionStart; // позиция курсора + let dollarIndex = inputText.lastIndexOf('$', cursorPosition); // Индекс последнего "$" перед курсором + + // Если "$" не найден, очищаем autocompleteOutput и выходим + if (dollarIndex === -1) { + autocompleteOutput.innerHTML = ''; + return; + } + + // Иначе, ищем функции, начинающиеся с текста после "$" + const searchTerm = inputText.substring(dollarIndex).toLowerCase(); + autocompleteOutput.innerHTML = ''; // Очищаем предыдущие предложения + + // Фильтруем доступные функции на основе введенного текста + const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); + + // Для каждой подходящей функции создаем span элемент и добавляем его в autocompleteOutput + matchingFunctions.forEach(func => { + const span = document.createElement('span'); + span.textContent = func; + span.addEventListener('click', () => { + // Когда span кликнут, заменяем текст в textarea выбранной функцией + textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); + textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; + autocompleteOutput.innerHTML = ''; + textarea.focus(); + }); + autocompleteOutput.appendChild(span); }); - } -} + }); +}); -// Вызываем функцию автокомплита после загрузки DOM -document.addEventListener('DOMContentLoaded', autocomplete); From a6307f3b3baa3f2395a4bc7beeeb8535adbba7d0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 08:37:22 +0300 Subject: [PATCH 0138/1179] Update playground.js --- src/theme/playground.js | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 886febc4094..7b5927a5c16 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -604,52 +604,41 @@ function typeScript() { } } -// Функция автозаполнения, срабатывающая после загрузки DOM document.addEventListener('DOMContentLoaded', function() { - // Получаем элемент
            , содержащий список функций const sectionList = document.querySelector('ol.section'); - // Если элемент не найден, выводим сообщение об ошибке и прекращаем выполнение if (!sectionList) { console.error("Элемент
              не найден!"); return; } - // Извлекаем HTML содержимое sectionList и парсим его для поиска ссылок () const functions = Array.from(new DOMParser().parseFromString(sectionList.innerHTML, 'text/html').querySelectorAll('a')) - .map(a => a.textContent) // Извлекаем текст из каждой ссылки - .filter(text => text.startsWith('$')); // Фильтруем функции, начинающиеся с "$" + .map(a => a.textContent) + .filter(text => text.startsWith('$')); - // Получаем ссылку на текстовое поле (textarea) и контейнер для автозаполнения const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); - // Добавляем обработчик события "input" к текстовому полю textarea.addEventListener('input', function(event) { - const inputText = event.target.value; // Получаем текущий текст из textarea - const cursorPosition = textarea.selectionStart; // позиция курсора - let dollarIndex = inputText.lastIndexOf('$', cursorPosition); // Индекс последнего "$" перед курсором + const inputText = event.target.value; + const cursorPosition = textarea.selectionStart; + let dollarIndex = inputText.lastIndexOf('$', cursorPosition); - // Если "$" не найден, очищаем autocompleteOutput и выходим if (dollarIndex === -1) { autocompleteOutput.innerHTML = ''; return; } - // Иначе, ищем функции, начинающиеся с текста после "$" const searchTerm = inputText.substring(dollarIndex).toLowerCase(); - autocompleteOutput.innerHTML = ''; // Очищаем предыдущие предложения + autocompleteOutput.innerHTML = ''; - // Фильтруем доступные функции на основе введенного текста const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - // Для каждой подходящей функции создаем span элемент и добавляем его в autocompleteOutput matchingFunctions.forEach(func => { const span = document.createElement('span'); span.textContent = func; span.addEventListener('click', () => { - // Когда span кликнут, заменяем текст в textarea выбранной функцией textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; autocompleteOutput.innerHTML = ''; @@ -660,3 +649,4 @@ document.addEventListener('DOMContentLoaded', function() { }); }); + From 4a310711bb7abe5a7b8517744e043da27919d254 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 08:48:36 +0300 Subject: [PATCH 0139/1179] Create autocomplete.js --- src/theme/autocomplete.js | 53 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/theme/autocomplete.js diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js new file mode 100644 index 00000000000..6bff2519a9f --- /dev/null +++ b/src/theme/autocomplete.js @@ -0,0 +1,53 @@ +function autocomplete() { + if (2 > 1) { + const sectionList = document.querySelector('ol.section'); + + if (!sectionList) { + console.error("Не найден элемент
                ."); + return; + } + const html = sectionList.innerHTML; + const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) + .map(a => a.textContent) + .filter(text => text.startsWith('$')); + + const textarea = document.getElementById('editor'); + const autocompleteOutput = document.getElementById('autocomplete'); + + textarea.addEventListener('input', function (event) { + const inputText = event.target.value; + const cursorPosition = textarea.selectionStart; + let searchTerm = ''; + let dollarIndex = inputText.lastIndexOf('$', cursorPosition); + + if (dollarIndex === -1) { + autocompleteOutput.innerHTML = ''; + return; + } + + searchTerm = inputText.substring(dollarIndex).toLowerCase(); + autocompleteOutput.innerHTML = ''; + + const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); + + matchingFunctions.forEach(func => { + const span = document.createElement('span'); + span.textContent = func; + span.style.backgroundColor = 'lightgray'; + span.style.marginRight = '5px'; + span.style.cursor = 'pointer'; + span.addEventListener('click', function () { + textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); + textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; + autocompleteOutput.innerHTML = ''; + textarea.focus(); + }); + + autocompleteOutput.appendChild(span); + }); + + }); + } +} + +autocomplete(); From 7c1dc5c9cc77510e3eed05b7fd89ba5b79edc719 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 08:55:32 +0300 Subject: [PATCH 0140/1179] Update index.hbs --- src/theme/index.hbs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/index.hbs b/src/theme/index.hbs index 5a6cef70b4a..06c4b75418b 100644 --- a/src/theme/index.hbs +++ b/src/theme/index.hbs @@ -316,6 +316,7 @@ + - \ No newline at end of file + From fa8f3f2dee7f81c12a2ad3448f6ef136f4649efb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 08:57:29 +0300 Subject: [PATCH 0141/1179] Update playground.js --- src/theme/playground.js | 47 ----------------------------------------- 1 file changed, 47 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 7b5927a5c16..09650b7e5b2 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -603,50 +603,3 @@ function typeScript() { } } } - -document.addEventListener('DOMContentLoaded', function() { - - const sectionList = document.querySelector('ol.section'); - - if (!sectionList) { - console.error("Элемент
                  не найден!"); - return; - } - - const functions = Array.from(new DOMParser().parseFromString(sectionList.innerHTML, 'text/html').querySelectorAll('a')) - .map(a => a.textContent) - .filter(text => text.startsWith('$')); - - const textarea = document.getElementById('editor'); - const autocompleteOutput = document.getElementById('autocomplete'); - - textarea.addEventListener('input', function(event) { - const inputText = event.target.value; - const cursorPosition = textarea.selectionStart; - let dollarIndex = inputText.lastIndexOf('$', cursorPosition); - - if (dollarIndex === -1) { - autocompleteOutput.innerHTML = ''; - return; - } - - const searchTerm = inputText.substring(dollarIndex).toLowerCase(); - autocompleteOutput.innerHTML = ''; - - const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - - matchingFunctions.forEach(func => { - const span = document.createElement('span'); - span.textContent = func; - span.addEventListener('click', () => { - textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); - textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - autocompleteOutput.innerHTML = ''; - textarea.focus(); - }); - autocompleteOutput.appendChild(span); - }); - }); -}); - - From bf722e7cde4284c88214490da50a9fbeaf59c799 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 09:56:54 +0300 Subject: [PATCH 0142/1179] Update playground.js --- src/theme/playground.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 09650b7e5b2..848b314325e 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -343,7 +343,9 @@ function checkBrackets() { } else if (line[j] === '[') { openBrackets++; if (j + 1 < line.length && line[j + 1] === ']') { - callError(`Warning: Empty brackets [] detected on line ${i + 1}.`, 'warn'); + if (openBrackets <= dollarCount) { + callError(`Warning: Empty brackets [] detected on line ${i + 1}.`, 'warn'); + } } } else if (line[j] === ']' && (j === 0 || line[j - 1] !== '\\')) { closeBrackets++; @@ -603,3 +605,4 @@ function typeScript() { } } } + From 963f6169a44c0f8165f61699e59ea082b3663de2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 09:57:51 +0300 Subject: [PATCH 0143/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index efe3178ef16..d2b186eb14c 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -29,7 +29,7 @@ Here you can use the basic editor features to write codes more conveniently.

                  -
                  +
                  From 775b49a4b5da9c17e412434c44174d88403789ff Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:05:32 +0300 Subject: [PATCH 0144/1179] Update playground.js --- src/theme/playground.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 848b314325e..62d1e7bd8d6 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -606,3 +606,18 @@ function typeScript() { } } +function bdscript2() { + const editor = document.getElementById("editor"); + const languageSelect = document.querySelector('select[name="language"]'); + const scriptLanguage = languageSelect.value; + const scriptText = editor.value; + + const bdscript2Keywords = ["$try", "$endtry", "$catch", "$async", "$endasync", "$eval", "$error", "$optOff", "$elseif", "$stop", "$var"]; + + const containsBDScript2Keywords = bdscript2Keywords.some(keyword => scriptText.includes(keyword)); + + if (containsBDScript2Keywords && scriptLanguage !== "bds2") { + const firstKeyword = bdscript2Keywords.find(keyword => scriptText.includes(keyword)); + callError(`Function ${firstKeyword} is only available in BDScript2`); + } +} From b2b69206393d9363cfcd9b44537ba26b1c177bca Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:06:08 +0300 Subject: [PATCH 0145/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index d2b186eb14c..720e231af92 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -21,7 +21,7 @@ Here you can use the basic editor features to write codes more conveniently. - BDScript 2 From f11a60136b1264cba8c7b3f87f7d8446b1080127 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:08:39 +0300 Subject: [PATCH 0146/1179] Update editor.md --- src/tools/editor.md | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 720e231af92..b6db1915f78 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -10,29 +10,31 @@ Here you can use the basic editor features to write codes more conveniently.
-

Name

-
- - 0/50 -
- + 0/50 +
+
+ - + + + +

-
+
- -
+ +
@@ -54,8 +56,8 @@ Here you can use the basic editor features to write codes more conveniently.
-

Tips

-

**

-

*

-

`

+

Tips

+

**

+

*

+

`

From ea5594e1d596167f3c0370c60ab7a698b271659c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:34:20 +0300 Subject: [PATCH 0147/1179] Update chrome.css --- src/theme/css/chrome.css | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 8c0566148de..3f96ed73386 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1280,3 +1280,32 @@ ul#searchresults span.teaser em { color: #888; font-size: 0.8em; } + +#selectors { + user-select: none; + -webkit-user-select: none; + display: flex; + justify-content: center; + align-items: center; + gap: 10px; + margin-bottom: 1.5rem; + margin-top: -1.5rem; +} + +#selectors select { + text-decoration: none; + touch-action: manipulation; + -webkit-tap-highlight-color: transparent; + width: auto; + padding: 8px 5px; + background: rgb(255 255 255 / 10%); + color: rgb(255 255 255 / 80%); + border-radius: 10px; + box-sizing: border-box; + border: 0; +} + +#selectors select option { + color: #d3d3d3; + background-color: var(--color3); +} From 9a9e6a8cccbcb5ee6cb48c45a61c5a843b1df013 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:40:26 +0300 Subject: [PATCH 0148/1179] Update chrome.css --- src/theme/css/chrome.css | 50 +++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 3f96ed73386..d566810edab 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1218,27 +1218,34 @@ ul#searchresults span.teaser em { } .scriptdiv button { - position: absolute; - top: .3rem; - right: .3rem; - user-select: none; - -webkit-user-select: none; - touch-action: manipulation; - outline: none; - color: #fff; - margin: 1.5px 5px; - padding: 5px; - cursor: pointer; - width: 3.2rem; - height: 3.2rem; - font-size: 1.5rem; - border-style: solid; - border-width: 1px; - border-radius: 10px; - border-color: #aeaeae; - background: rgb(255 255 255 / 10%); - opacity: 0.8; - transition: 0.2s; + position: absolute; + top: 0.3rem; + user-select: none; + -webkit-user-select: none; + touch-action: manipulation; + outline: none; + color: #fff; + margin: 1.5px 5px; + padding: 5px; + cursor: pointer; + width: 3.2rem; + height: 3.2rem; + font-size: 1.5rem; + border-style: solid; + border-width: 1px; + border-radius: 10px; + border-color: #aeaeae; + background: rgb(255 255 255 / 10%); + opacity: 0.8; + transition: 0.2s; +} + +.scriptdiv button:nth-of-type(1) { + right: 4rem; +} + +.scriptdiv button:nth-of-type(2) { + right: 0.3rem; } #error-message { @@ -1309,3 +1316,4 @@ ul#searchresults span.teaser em { color: #d3d3d3; background-color: var(--color3); } + From 7b9e4e6b87c5c4fb836c942e977c492f20e4e841 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:43:22 +0300 Subject: [PATCH 0149/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index b6db1915f78..399998b158e 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -33,7 +33,7 @@ Here you can use the basic editor features to write codes more conveniently.

- +
From ca722398f5a38597dd2ee8691cc5e01cb275679e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:50:33 +0300 Subject: [PATCH 0150/1179] Update playground.js --- src/theme/playground.js | 96 ++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 49 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 62d1e7bd8d6..9126d782968 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -545,65 +545,62 @@ function nameScript() { } function typeScript() { - const nameInput = document.getElementById('name'); - const nameValue = nameInput.value; - const selectElement = document.querySelector('select[name="type"]'); - const selectedValue = selectElement.value; - const nameLabel = document.getElementById('scriptType'); - - const regexErrorText = "Error: Slash command name must contain only English letters and hyphens."; - const lengthErrorText = "Error: Slash command name exceeds 32 characters."; - const emptyErrorText = "Error: Name field cannot be empty."; - - if (!nameValue) { - callError("Error: Name field cannot be empty.", 'error', true); - return; - } else { - deleteError(emptyErrorText); - } + const nameInput = document.getElementById('name').value; + const selectValue = document.querySelector('select[name="type"]').value; + const nameLabel = document.getElementById('scriptType'); + + const errorMessages = { + empty: "Error: Name field cannot be empty.", + regex: "Error: Slash command name must contain only English letters and hyphens.", + length: "Error: Slash command name exceeds 32 characters.", + invalidCallback: "Error: Invalid callback name." + }; - let commandType = ''; + const callbackKeywords = ['$awaitedCommand', '$awaitedCommandError', '$onJoined', '$onLeave', '$onBanAdd', '$onBanRemove', '$onMessageDelete', '$onInteraction', '$alwaysReply', '$messageContains', '$reaction']; - if (selectedValue === 'auto') { - if (nameValue.startsWith('/')) { - commandType = ' • Slash Command'; - } else if (nameValue.startsWith('$on')) { - commandType = ' • Callback'; + if (!nameInput) { + callError(errorMessages.empty, 'error', true); + return; } else { - commandType = ' • Command'; + deleteError(errorMessages.empty); } - } else if (selectedValue === 'command') { - commandType = ' • Command'; - } else if (selectedValue === 'callback') { - commandType = ' • Callback'; - } else if (selectedValue === 'slash') { - commandType = ' • Slash Command'; - } - - nameLabel.textContent = 'Name' + commandType; - if (commandType.includes('Slash Command')) { - const regex = /^[a-zA-Z-]+$/; - let nameToCheck = nameValue; + let commandType = ''; - if (nameValue.length > 0) { - nameToCheck = nameValue.substring(1); - } else { - nameToCheck = ""; + if (selectValue === 'auto') { + commandType = callbackKeywords.some(keyword => nameInput.startsWith(keyword)) ? ' • Callback' : nameInput.startsWith('/') ? ' • Slash Command' : ' • Command'; + } else if (selectValue === 'callback') { + if (!callbackKeywords.some(keyword => nameInput.startsWith(keyword))) { + callError(errorMessages.invalidCallback, 'error', true); + return; + } else { + deleteError(errorMessages.invalidCallback); + } + commandType = ' • Callback'; + } else if (selectValue === 'command') { + commandType = ' • Command'; + } else if (selectValue === 'slash') { + commandType = ' • Slash Command'; } - if (!regex.test(nameToCheck)) { - callError(regexErrorText, 'error', true); - } else { - deleteError(regexErrorText); - } + nameLabel.textContent = 'Name' + commandType; - if (nameValue.length > 32) { - callError(lengthErrorText, 'error', true); - } else { - deleteError(lengthErrorText); + if (commandType.includes('Slash Command')) { + const nameToCheck = nameInput.substring(1); + const regex = /^[a-zA-Z-]+$/; + + if (!regex.test(nameToCheck)) { + callError(errorMessages.regex, 'error', true); + } else { + deleteError(errorMessages.regex); + } + + if (nameInput.length > 32) { + callError(errorMessages.length, 'error', true); + } else { + deleteError(errorMessages.length); + } } - } } function bdscript2() { @@ -621,3 +618,4 @@ function bdscript2() { callError(`Function ${firstKeyword} is only available in BDScript2`); } } + From 4611730b445428354ca13bcb2405e9cec1911a8c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:57:06 +0300 Subject: [PATCH 0151/1179] Update playground.js --- src/theme/playground.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 9126d782968..2620bd21b11 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -565,17 +565,11 @@ function typeScript() { deleteError(errorMessages.empty); } - let commandType = ''; + let commandType = 'Command'; if (selectValue === 'auto') { commandType = callbackKeywords.some(keyword => nameInput.startsWith(keyword)) ? ' • Callback' : nameInput.startsWith('/') ? ' • Slash Command' : ' • Command'; } else if (selectValue === 'callback') { - if (!callbackKeywords.some(keyword => nameInput.startsWith(keyword))) { - callError(errorMessages.invalidCallback, 'error', true); - return; - } else { - deleteError(errorMessages.invalidCallback); - } commandType = ' • Callback'; } else if (selectValue === 'command') { commandType = ' • Command'; @@ -585,6 +579,15 @@ function typeScript() { nameLabel.textContent = 'Name' + commandType; + if (commandType.includes('Callback)) { + if (!callbackKeywords.some(keyword => nameInput.startsWith(keyword))) { + callError(errorMessages.invalidCallback, 'error', true); + return; + } else { + deleteError(errorMessages.invalidCallback); + } + } + if (commandType.includes('Slash Command')) { const nameToCheck = nameInput.substring(1); const regex = /^[a-zA-Z-]+$/; @@ -619,3 +622,4 @@ function bdscript2() { } } + From 2cefede4f0ebf51454dee1a212edb0024f8e09ee Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:05:43 +0300 Subject: [PATCH 0152/1179] Update playground.js --- src/theme/playground.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 2620bd21b11..3dc2ff4e31e 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -579,7 +579,7 @@ function typeScript() { nameLabel.textContent = 'Name' + commandType; - if (commandType.includes('Callback)) { + if (commandType.includes('Callback')) { if (!callbackKeywords.some(keyword => nameInput.startsWith(keyword))) { callError(errorMessages.invalidCallback, 'error', true); return; @@ -623,3 +623,4 @@ function bdscript2() { } + From b966f253244491e7fe2a138b6603cf9e5e88174a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:08:36 +0300 Subject: [PATCH 0153/1179] Update playground.js --- src/theme/playground.js | 78 +++++++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 31 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 3dc2ff4e31e..138132d7a2b 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -545,9 +545,9 @@ function nameScript() { } function typeScript() { - const nameInput = document.getElementById('name').value; - const selectValue = document.querySelector('select[name="type"]').value; - const nameLabel = document.getElementById('scriptType'); + const nameInput: string = (document.getElementById('name') as HTMLInputElement).value; + const selectValue: string = (document.querySelector('select[name="type"]') as HTMLSelectElement).value; + const nameLabel: HTMLElement = document.getElementById('scriptType'); const errorMessages = { empty: "Error: Name field cannot be empty.", @@ -556,7 +556,7 @@ function typeScript() { invalidCallback: "Error: Invalid callback name." }; - const callbackKeywords = ['$awaitedCommand', '$awaitedCommandError', '$onJoined', '$onLeave', '$onBanAdd', '$onBanRemove', '$onMessageDelete', '$onInteraction', '$alwaysReply', '$messageContains', '$reaction']; + const callbackKeywords: string[] = ['$awaitedCommand', '$awaitedCommandError', '$onJoined', '$onLeave', '$onBanAdd', '$onBanRemove', '$onMessageDelete', '$onInteraction', '$alwaysReply', '$messageContains', '$reaction']; if (!nameInput) { callError(errorMessages.empty, 'error', true); @@ -565,45 +565,60 @@ function typeScript() { deleteError(errorMessages.empty); } - let commandType = 'Command'; + let commandType: string = 'Command'; - if (selectValue === 'auto') { - commandType = callbackKeywords.some(keyword => nameInput.startsWith(keyword)) ? ' • Callback' : nameInput.startsWith('/') ? ' • Slash Command' : ' • Command'; - } else if (selectValue === 'callback') { + if (selectValue === 'callback') { commandType = ' • Callback'; - } else if (selectValue === 'command') { - commandType = ' • Command'; - } else if (selectValue === 'slash') { - commandType = ' • Slash Command'; - } - - nameLabel.textContent = 'Name' + commandType; - if (commandType.includes('Callback')) { if (!callbackKeywords.some(keyword => nameInput.startsWith(keyword))) { callError(errorMessages.invalidCallback, 'error', true); return; } else { deleteError(errorMessages.invalidCallback); } - } - - if (commandType.includes('Slash Command')) { - const nameToCheck = nameInput.substring(1); - const regex = /^[a-zA-Z-]+$/; - - if (!regex.test(nameToCheck)) { - callError(errorMessages.regex, 'error', true); - } else { - deleteError(errorMessages.regex); - } - - if (nameInput.length > 32) { - callError(errorMessages.length, 'error', true); + } else if (selectValue === 'slash') { + commandType = ' • Slash Command'; + const nameToCheck: string = nameInput.substring(1); + const regex: RegExp = /^[a-zA-Z-]+$/; + + if (!regex.test(nameToCheck)) { + callError(errorMessages.regex, 'error', true); + } else { + deleteError(errorMessages.regex); + } + if (nameInput.length > 32) { + callError(errorMessages.length, 'error', true); + } else { + deleteError(errorMessages.length); + } + } else { + if (selectValue === 'auto') { + if (callbackKeywords.some(keyword => nameInput.startsWith(keyword))) { + commandType = ' • Callback'; + } else if (nameInput.startsWith('/')) { + commandType = ' • Slash Command'; + const nameToCheck: string = nameInput.substring(1); + const regex: RegExp = /^[a-zA-Z-]+$/; + + if (!regex.test(nameToCheck)) { + callError(errorMessages.regex, 'error', true); + } else { + deleteError(errorMessages.regex); + } + if (nameInput.length > 32) { + callError(errorMessages.length, 'error', true); + } else { + deleteError(errorMessages.length); + } + } else { + commandType = ' • Command'; + } } else { - deleteError(errorMessages.length); + commandType = ' • Command'; } } + + nameLabel.textContent = 'Name' + commandType; } function bdscript2() { @@ -624,3 +639,4 @@ function bdscript2() { + From 61fe4e0afba8b406e6bc066cf4126f9ed3ae05c5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:22:27 +0300 Subject: [PATCH 0154/1179] Update playground.js --- src/theme/playground.js | 125 ++++++++++++++++++++-------------------- 1 file changed, 63 insertions(+), 62 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 138132d7a2b..cb811dd7885 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -545,79 +545,79 @@ function nameScript() { } function typeScript() { - const nameInput: string = (document.getElementById('name') as HTMLInputElement).value; - const selectValue: string = (document.querySelector('select[name="type"]') as HTMLSelectElement).value; - const nameLabel: HTMLElement = document.getElementById('scriptType'); - - const errorMessages = { - empty: "Error: Name field cannot be empty.", - regex: "Error: Slash command name must contain only English letters and hyphens.", - length: "Error: Slash command name exceeds 32 characters.", - invalidCallback: "Error: Invalid callback name." - }; + const nameInputVal = document.getElementById('name')?.value || ''; + const selectValue = document.querySelector('select[name="type"]')?.value || ''; + const nameLabel = document.getElementById('scriptType'); + + const errorMessages = { + empty: "Error: Name field cannot be empty.", + regex: "Error: Slash command name must contain only English letters and hyphens.", + length: "Error: Slash command name exceeds 32 characters.", + invalidCallback: "Error: Invalid callback name." + }; + + const callbackKeywords = ['$awaitedCommand', '$awaitedCommandError', '$onJoined', '$onLeave', '$onBanAdd', '$onBanRemove', '$onMessageDelete', '$onInteraction', '$alwaysReply', '$messageContains', '$reaction']; + + if (!nameInputVal) { + callError(errorMessages.empty, 'error', true); + return; + } else { + deleteError(errorMessages.empty); + } - const callbackKeywords: string[] = ['$awaitedCommand', '$awaitedCommandError', '$onJoined', '$onLeave', '$onBanAdd', '$onBanRemove', '$onMessageDelete', '$onInteraction', '$alwaysReply', '$messageContains', '$reaction']; + let commandType = 'Command'; - if (!nameInput) { - callError(errorMessages.empty, 'error', true); - return; + if (selectValue === 'callback') { + commandType = ' • Callback'; + + if (!callbackKeywords.some(keyword => nameInputVal.startsWith(keyword))) { + callError(errorMessages.invalidCallback, 'error', true); + return; } else { - deleteError(errorMessages.empty); + deleteError(errorMessages.invalidCallback); } + } else if (selectValue === 'slash') { + commandType = ' • Slash Command'; + const nameToCheck = nameInputVal.substring(1); + const regex = /^[a-zA-Z-]+$/; - let commandType: string = 'Command'; + if (!regex.test(nameToCheck)) { + callError(errorMessages.regex, 'error', true); + } else { + deleteError(errorMessages.regex); + } + if (nameInputVal.length > 32) { + callError(errorMessages.length, 'error', true); + } else { + deleteError(errorMessages.length); + } + } else if (selectValue === 'auto') { + const nameToCheck = nameInputVal.substring(1); + const regex = /^[a-zA-Z-]+$/; - if (selectValue === 'callback') { - commandType = ' • Callback'; + if (callbackKeywords.some(keyword => nameInputVal.startsWith(keyword))) { + commandType = ' • Callback'; + } else if (nameInputVal.startsWith('/')) { - if (!callbackKeywords.some(keyword => nameInput.startsWith(keyword))) { - callError(errorMessages.invalidCallback, 'error', true); - return; + commandType = ' • Slash Command'; + if (!regex.test(nameToCheck)) { + callError(errorMessages.regex, 'error', true); } else { - deleteError(errorMessages.invalidCallback); + deleteError(errorMessages.regex); } - } else if (selectValue === 'slash') { - commandType = ' • Slash Command'; - const nameToCheck: string = nameInput.substring(1); - const regex: RegExp = /^[a-zA-Z-]+$/; - - if (!regex.test(nameToCheck)) { - callError(errorMessages.regex, 'error', true); - } else { - deleteError(errorMessages.regex); - } - if (nameInput.length > 32) { - callError(errorMessages.length, 'error', true); - } else { - deleteError(errorMessages.length); - } - } else { - if (selectValue === 'auto') { - if (callbackKeywords.some(keyword => nameInput.startsWith(keyword))) { - commandType = ' • Callback'; - } else if (nameInput.startsWith('/')) { - commandType = ' • Slash Command'; - const nameToCheck: string = nameInput.substring(1); - const regex: RegExp = /^[a-zA-Z-]+$/; - - if (!regex.test(nameToCheck)) { - callError(errorMessages.regex, 'error', true); - } else { - deleteError(errorMessages.regex); - } - if (nameInput.length > 32) { - callError(errorMessages.length, 'error', true); - } else { - deleteError(errorMessages.length); - } - } else { - commandType = ' • Command'; - } + if (nameInputVal.length > 32) { + callError(errorMessages.length, 'error', true); } else { - commandType = ' • Command'; - } - } + deleteError(errorMessages.length); + } + } else { + commandType = ' • Command'; + } + } else { + commandType = ' • Command'; + } + if(nameLabel) nameLabel.textContent = 'Name' + commandType; } @@ -640,3 +640,4 @@ function bdscript2() { + From 86e16bf11b303b7560a5beb77cc6fbb13e5687fb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:53:09 +0300 Subject: [PATCH 0155/1179] Update playground.js --- src/theme/playground.js | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index cb811dd7885..38857116266 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -274,8 +274,22 @@ function callError(message, type = 'error', unique = false) { }); updateCloseAllButton(); +} + +function deleteError(message) { + const errorMessageElement = document.getElementById("error-message"); - function updateCloseAllButton() { + for (let i = errorMessageElement.children.length - 1; i >= 0; i--) { + const child = errorMessageElement.children[i]; + + if (child.tagName === 'DIV' && child.textContent.startsWith(message)) { + child.remove(); + } + } + updateCloseAllButton(); +} + +function updateCloseAllButton() { const errorCount = errorMessageElement.children.length - (closeAllButton ? 1 : 0); const closeAllButtonId = 'close-all-errors-btn'; @@ -297,20 +311,6 @@ function callError(message, type = 'error', unique = false) { } else if (closeAllButton) { closeAllButton.remove(); } - } -} - -function deleteError(message) { - const errorMessageElement = document.getElementById("error-message"); - - for (let i = errorMessageElement.children.length - 1; i >= 0; i--) { - const child = errorMessageElement.children[i]; - - if (child.tagName === 'DIV' && child.textContent.startsWith(message)) { - child.remove(); - } - } - updateCloseAllButton(); } function checkBrackets() { @@ -641,3 +641,4 @@ function bdscript2() { + From c2d72468d1adc32e8a6a9f1451532ea6605f84c0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:59:40 +0300 Subject: [PATCH 0156/1179] Update playground.js --- src/theme/playground.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 38857116266..4817e56e3cd 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -290,8 +290,10 @@ function deleteError(message) { } function updateCloseAllButton() { + const errorMessageElement = document.getElementById("error-message"); const errorCount = errorMessageElement.children.length - (closeAllButton ? 1 : 0); const closeAllButtonId = 'close-all-errors-btn'; + let closeAllButton = document.getElementById('close-all-errors-btn'); if (errorCount > 3) { if (!closeAllButton) { @@ -642,3 +644,4 @@ function bdscript2() { + From d9b5eee06eec523880984cbfb7819526e8de568e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 12:11:32 +0300 Subject: [PATCH 0157/1179] Update playground.js --- src/theme/playground.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 4817e56e3cd..f1bb0b3336e 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -290,10 +290,10 @@ function deleteError(message) { } function updateCloseAllButton() { + let closeAllButton = document.getElementById('close-all-errors-btn'); const errorMessageElement = document.getElementById("error-message"); const errorCount = errorMessageElement.children.length - (closeAllButton ? 1 : 0); const closeAllButtonId = 'close-all-errors-btn'; - let closeAllButton = document.getElementById('close-all-errors-btn'); if (errorCount > 3) { if (!closeAllButton) { @@ -638,10 +638,3 @@ function bdscript2() { callError(`Function ${firstKeyword} is only available in BDScript2`); } } - - - - - - - From 74ba84363d3b190378be85a7d068b065d7e56574 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 12:42:21 +0300 Subject: [PATCH 0158/1179] Update playground.js --- src/theme/playground.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index f1bb0b3336e..51e7e11057c 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -571,10 +571,8 @@ function typeScript() { if (selectValue === 'callback') { commandType = ' • Callback'; - if (!callbackKeywords.some(keyword => nameInputVal.startsWith(keyword))) { callError(errorMessages.invalidCallback, 'error', true); - return; } else { deleteError(errorMessages.invalidCallback); } @@ -638,3 +636,4 @@ function bdscript2() { callError(`Function ${firstKeyword} is only available in BDScript2`); } } + From c6a77c9adba7909fc5e1064cce89b24f14fe28a5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 20:01:42 +0300 Subject: [PATCH 0159/1179] Update playground.js --- src/theme/playground.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 51e7e11057c..2f37961454d 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -562,7 +562,6 @@ function typeScript() { if (!nameInputVal) { callError(errorMessages.empty, 'error', true); - return; } else { deleteError(errorMessages.empty); } @@ -598,7 +597,6 @@ function typeScript() { if (callbackKeywords.some(keyword => nameInputVal.startsWith(keyword))) { commandType = ' • Callback'; } else if (nameInputVal.startsWith('/')) { - commandType = ' • Slash Command'; if (!regex.test(nameToCheck)) { callError(errorMessages.regex, 'error', true); @@ -637,3 +635,4 @@ function bdscript2() { } } + From 0a71575f2e67ad73aeab7b88c3383a9b31a96b14 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 21:14:13 +0300 Subject: [PATCH 0160/1179] Update editor.md --- src/tools/editor.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index 399998b158e..25cb6bd61f9 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -55,6 +55,12 @@ Here you can use the basic editor features to write codes more conveniently.
+
+ + + +
+

Tips

**

From 2ea2cab0d03e0cef5ee60b30402bb8e0c10edb16 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:10:36 +0300 Subject: [PATCH 0161/1179] Update playground.js --- src/theme/playground.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 2f37961454d..4901754ad52 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -635,4 +635,12 @@ function bdscript2() { } } +function editorAreaButtons() { + const scriptDiv = document.querySelector('.scriptdiv'); + const buttons = scriptDiv.querySelectorAll('button'); + const isHidden = buttons[0].style.display === 'none'; + buttons.forEach(button => { + button.style.display = isHidden ? 'inline-block' : 'none'; + }); +} From b81dfe05d4459878e2c0625b72f76be217a90d49 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:15:49 +0300 Subject: [PATCH 0162/1179] Update playground.js --- src/theme/playground.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 4901754ad52..92febada3ad 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -365,6 +365,19 @@ function checkBrackets() { } } +function editorFindCase() { + caseSensitive = !caseSensitive; + + const button = document.querySelector('#settings button'); + if (caseSensitive) { + button.textContent = "Case Sensitive ON"; + } else { + button.textContent = "Case Sensitive OFF"; + } + + toggleHighlight(); +} + function toggleHighlight() { const highlightedTextDiv = document.getElementById("highlightedText"); const text = document.getElementById("editor").value; @@ -374,7 +387,8 @@ function toggleHighlight() { if (searchText) { try { - const regex = new RegExp(searchText, 'gi'); + const flags = caseSensitive ? 'g' : 'gi'; + const regex = new RegExp(searchText, flags); highlighted = text.replace(regex, (match) => { matches++; @@ -382,7 +396,8 @@ function toggleHighlight() { }); } catch (e) { const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const regex = new RegExp(escapedSearchText, 'gi'); + const flags = caseSensitive ? 'g' : 'gi'; + const regex = new RegExp(escapedSearchText, flags); highlighted = text.replace(regex, (match) => { matches++; From b060ed45a8bc73eecca48e48975dde153b5d1f1f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 09:29:23 +0300 Subject: [PATCH 0163/1179] Update playground.js --- src/theme/playground.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 92febada3ad..d63ba26e085 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -659,3 +659,4 @@ function editorAreaButtons() { button.style.display = isHidden ? 'inline-block' : 'none'; }); } + From 98c4175f6d897adb7094a13541f7ccf2f6786799 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 09:31:36 +0300 Subject: [PATCH 0164/1179] Update playground.js --- src/theme/playground.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index d63ba26e085..183329b82e1 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -365,6 +365,8 @@ function checkBrackets() { } } +let caseSensitive = false; + function editorFindCase() { caseSensitive = !caseSensitive; @@ -660,3 +662,4 @@ function editorAreaButtons() { }); } + From 070c90727983ecbd5a75672d62e014a97d7af784 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 11:44:28 +0300 Subject: [PATCH 0165/1179] Update playground.js --- src/theme/playground.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 183329b82e1..ee2d7d836f6 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -370,7 +370,7 @@ let caseSensitive = false; function editorFindCase() { caseSensitive = !caseSensitive; - const button = document.querySelector('#settings button'); + const button = document.getElementById("caseSensitiveButton"); if (caseSensitive) { button.textContent = "Case Sensitive ON"; } else { @@ -662,4 +662,13 @@ function editorAreaButtons() { }); } +function editorBrokeLinks() { + const links = document.getElementsByTagName('a'); + + for (let i = 0; i < links.length; i++) { + links[i].setAttribute('href', '#'); + links[i].style.pointerEvents = 'none'; + } +} + From a0491ac3e661a590a8860e87df698d00314154ca Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 11:44:56 +0300 Subject: [PATCH 0166/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 25cb6bd61f9..e5e0c3dc9fa 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -57,7 +57,7 @@ Here you can use the basic editor features to write codes more conveniently.
- +
From 64a45159f2dd22722d67850b79cee4f359d37d94 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 11:47:15 +0300 Subject: [PATCH 0167/1179] Update editor.md --- src/tools/editor.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index e5e0c3dc9fa..5daf8d7570f 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -56,9 +56,11 @@ Here you can use the basic editor features to write codes more conveniently.
- + - + + +
From 4387f03356ac7a405bf0bb1e5b45c4d4d1cd5aa7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 11:51:21 +0300 Subject: [PATCH 0168/1179] Update playground.js --- src/theme/playground.js | 48 +++++++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index ee2d7d836f6..61a213a0d18 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -237,10 +237,46 @@ function replaceText() { checkBrackets(); } +let showWarnings = true; +let showErrors = true; + +function editorWarning() { + showWarnings = !showWarnings; + const button = document.getElementById('changeWarningsButton'); + button.textContent = showWarnings ? 'Hide Warnings' : 'Show Warnings'; + updateErrorVisibility(); +} + +function editorError() { + showErrors = !showErrors; + const button = document.getElementById('changeErrorsButton'); + button.textContent = showErrors ? 'Hide Errors' : 'Show Errors'; + updateErrorVisibility(); +} + +function updateErrorVisibility() { + const errorMessageElement = document.getElementById("error-message"); + const errorDivs = errorMessageElement.children; + + for (let i = 0; i < errorDivs.length; i++) { + const errorDiv = errorDivs[i]; + + if (errorDiv.style && errorDiv.style.color) { + const isWarning = errorDiv.style.color === "orange"; + const isError = errorDiv.style.color === "red"; + + if (isWarning) { + errorDiv.style.display = showWarnings ? "block" : "none"; + } else if (isError) { + errorDiv.style.display = showErrors ? "block" : "none"; + } + } + } +} + function callError(message, type = 'error', unique = false) { const errorMessageElement = document.getElementById("error-message"); errorMessageElement.style.color = "red"; - if (unique) { for (let i = 0; i < errorMessageElement.children.length; i++) { if (errorMessageElement.children[i].textContent.startsWith(message)) { @@ -248,18 +284,16 @@ function callError(message, type = 'error', unique = false) { } } } - + let closeAllButton = document.getElementById('close-all-errors-btn'); - const errorDiv = document.createElement("div"); errorDiv.style.display = "block"; - + if (type === 'warn') { errorDiv.style.color = "orange"; } - errorDiv.innerHTML = `${message} ×`; - + errorDiv.innerHTML = ${message} ×; errorMessageElement.appendChild(errorDiv); if (closeAllButton) { @@ -267,7 +301,6 @@ function callError(message, type = 'error', unique = false) { } const closeBtn = errorDiv.querySelector('.close-btn'); - closeBtn.addEventListener('click', function() { errorDiv.remove(); updateCloseAllButton(); @@ -672,3 +705,4 @@ function editorBrokeLinks() { } + From 4a001efe2876333779e94fade44b7375b85a72d4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:04:40 +0300 Subject: [PATCH 0169/1179] Update editor.md --- src/tools/editor.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index 5daf8d7570f..50cc59a17c5 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -61,6 +61,7 @@ Here you can use the basic editor features to write codes more conveniently. +
From e048eb5154d93c27f8eb3f333c4c5293d645c456 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:06:37 +0300 Subject: [PATCH 0170/1179] Update playground.js --- src/theme/playground.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 61a213a0d18..e51cfaf5523 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -293,7 +293,7 @@ function callError(message, type = 'error', unique = false) { errorDiv.style.color = "orange"; } - errorDiv.innerHTML = ${message} ×; + errorDiv.innerHTML = `${message} ×`; errorMessageElement.appendChild(errorDiv); if (closeAllButton) { @@ -706,3 +706,4 @@ function editorBrokeLinks() { + From f41abb856563e46ee6858fd940782b09b774066b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:10:25 +0300 Subject: [PATCH 0171/1179] Update playground.js --- src/theme/playground.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index e51cfaf5523..10266a13b5f 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -704,6 +704,14 @@ function editorBrokeLinks() { } } +let isWrappingEnabled = true; +function editorWrapping()() { + const textarea = document.getElementById('editor'); + isWrappingEnabled = !isWrappingEnabled; + textarea.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; + const button = document.getElementById('textWrappingButton'); + button.textContent = isWrappingEnabled ? 'Disable Wrapping' : 'Enable Wrapping'; +} From 9d48a0c01258fdb920849f10ae66505ba9310dd3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:10:38 +0300 Subject: [PATCH 0172/1179] Update playground.js --- src/theme/playground.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 10266a13b5f..367fa5ce021 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -706,7 +706,7 @@ function editorBrokeLinks() { let isWrappingEnabled = true; -function editorWrapping()() { +function editorWrapping() { const textarea = document.getElementById('editor'); isWrappingEnabled = !isWrappingEnabled; @@ -715,3 +715,4 @@ function editorWrapping()() { const button = document.getElementById('textWrappingButton'); button.textContent = isWrappingEnabled ? 'Disable Wrapping' : 'Enable Wrapping'; } + From 75f8a9145d4b7951710b8bdb6479050b0d0f7986 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:13:47 +0300 Subject: [PATCH 0173/1179] Update chrome.css --- src/theme/css/chrome.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index d566810edab..3f9896fbbd0 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1073,6 +1073,10 @@ ul#searchresults span.teaser em { resize: none; } +#scriptType { + margin-top: -1.5rem; +} + #text-editorui { margin-top: 1rem; background-color: var(--color3); @@ -1317,3 +1321,4 @@ ul#searchresults span.teaser em { background-color: var(--color3); } + From 0b67ee234403fc6c41a62b0232fd6a516129db00 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:17:11 +0300 Subject: [PATCH 0174/1179] Update playground.js --- src/theme/playground.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 367fa5ce021..c1abc4a4ad8 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -708,11 +708,14 @@ let isWrappingEnabled = true; function editorWrapping() { const textarea = document.getElementById('editor'); + const findcode = document.getElementById('highlightedText'); isWrappingEnabled = !isWrappingEnabled; textarea.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; + findcode.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; const button = document.getElementById('textWrappingButton'); button.textContent = isWrappingEnabled ? 'Disable Wrapping' : 'Enable Wrapping'; } + From 0b69c60f05c2f837bc17490a5bd9402b98e598de Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:23:02 +0300 Subject: [PATCH 0175/1179] Update playground.js --- src/theme/playground.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index c1abc4a4ad8..cdf699b10ca 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -306,6 +306,7 @@ function callError(message, type = 'error', unique = false) { updateCloseAllButton(); }); + updateErrorVisibility(); updateCloseAllButton(); } @@ -719,3 +720,4 @@ function editorWrapping() { } + From c9091338632f1be20d22a425ae9db38de8a4057c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:27:45 +0300 Subject: [PATCH 0176/1179] Update chrome.css --- src/theme/css/chrome.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 3f9896fbbd0..1a683782fb9 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1140,6 +1140,7 @@ ul#searchresults span.teaser em { } #highlightedText { + overflow-x: auto; color: #bbb; font-size: 1.5rem; border-radius: 10px; @@ -1322,3 +1323,4 @@ ul#searchresults span.teaser em { } + From 2c3ad060d561d34f8a15d53c2f5fa55537b2e196 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:41:54 +0300 Subject: [PATCH 0177/1179] Update playground.js --- src/theme/playground.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index cdf699b10ca..f5ecf720877 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -267,7 +267,8 @@ function updateErrorVisibility() { if (isWarning) { errorDiv.style.display = showWarnings ? "block" : "none"; - } else if (isError) { + } + if (isError) { errorDiv.style.display = showErrors ? "block" : "none"; } } @@ -721,3 +722,4 @@ function editorWrapping() { + From 57df55324e2a19775101318719fa7170205e3feb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 19:13:25 +0300 Subject: [PATCH 0178/1179] Update chrome.css --- src/theme/css/chrome.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 1a683782fb9..db56d2b80de 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1041,6 +1041,11 @@ ul#searchresults span.teaser em { align-items: center; } +#another-info { + margin-top: -1rem; + margin-bottom: -1rem; +} + #editor, #name { width: 96%; font-size: 1.5rem; @@ -1324,3 +1329,4 @@ ul#searchresults span.teaser em { + From 34f37e5587541cdde21a29f87f85da0bede6d75f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 19:37:49 +0300 Subject: [PATCH 0179/1179] Update playground.js --- src/theme/playground.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index f5ecf720877..51a1e73a607 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -268,6 +268,7 @@ function updateErrorVisibility() { if (isWarning) { errorDiv.style.display = showWarnings ? "block" : "none"; } + if (isError) { errorDiv.style.display = showErrors ? "block" : "none"; } @@ -277,7 +278,7 @@ function updateErrorVisibility() { function callError(message, type = 'error', unique = false) { const errorMessageElement = document.getElementById("error-message"); - errorMessageElement.style.color = "red"; + if (unique) { for (let i = 0; i < errorMessageElement.children.length; i++) { if (errorMessageElement.children[i].textContent.startsWith(message)) { @@ -285,13 +286,15 @@ function callError(message, type = 'error', unique = false) { } } } - + let closeAllButton = document.getElementById('close-all-errors-btn'); const errorDiv = document.createElement("div"); errorDiv.style.display = "block"; - + if (type === 'warn') { errorDiv.style.color = "orange"; + } else { + errorDiv.style.color = "red"; // Устанавливаем цвет по умолчанию для ошибок } errorDiv.innerHTML = `${message} ×`; @@ -304,11 +307,9 @@ function callError(message, type = 'error', unique = false) { const closeBtn = errorDiv.querySelector('.close-btn'); closeBtn.addEventListener('click', function() { errorDiv.remove(); - updateCloseAllButton(); }); updateErrorVisibility(); - updateCloseAllButton(); } function deleteError(message) { @@ -723,3 +724,4 @@ function editorWrapping() { + From d976e2e2e0de61d9fd5ab74cdbcb117e4b04e004 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 19:44:24 +0300 Subject: [PATCH 0180/1179] Update editor.md --- src/tools/editor.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index 50cc59a17c5..8586dabff08 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -51,6 +51,7 @@ Here you can use the basic editor features to write codes more conveniently.

+ Regex is supported
From b510c5e2726cb2db05daff1d155a973aafa16210 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 26 Aug 2025 20:01:11 +0300 Subject: [PATCH 0181/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 8586dabff08..6b2d39acafe 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -51,7 +51,7 @@ Here you can use the basic editor features to write codes more conveniently.

- Regex is supported +

Regex is supported

From bc013cc96c5a4a67039fe89de80f5c1b270d9e96 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 00:35:28 +0300 Subject: [PATCH 0182/1179] Update playground.js --- src/theme/playground.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 51a1e73a607..fe0ce65d33f 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -579,7 +579,6 @@ function saveFile() { URL.revokeObjectURL(url); } - function nameScript() { const textarea = document.getElementById('name'); const count = textarea.parentNode.querySelector('span'); @@ -610,7 +609,12 @@ function typeScript() { length: "Error: Slash command name exceeds 32 characters.", invalidCallback: "Error: Invalid callback name." }; - + + deleteError(errorMessages.regex); + deleteError(errorMessages.empty); + deleteError(errorMessages.length); + deleteError(errorMessages.invalidCallback); + const callbackKeywords = ['$awaitedCommand', '$awaitedCommandError', '$onJoined', '$onLeave', '$onBanAdd', '$onBanRemove', '$onMessageDelete', '$onInteraction', '$alwaysReply', '$messageContains', '$reaction']; if (!nameInputVal) { From 08b6a1bba18e838c790ad065de375360d4877d4e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 09:10:42 +0300 Subject: [PATCH 0183/1179] Update chrome.css --- src/theme/css/chrome.css | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index db56d2b80de..f41c1d4aee3 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1084,11 +1084,19 @@ ul#searchresults span.teaser em { #text-editorui { margin-top: 1rem; + margin-bottom: 1rem; background-color: var(--color3); padding: 10px; border-radius: 10px; } +#text-editorui p { + margin-bottom: -.5rem; + margin-top: .5rem; + font-size: 1rem; + color: #9e9e9e; +} + #searchText, #replaceText { background: hsl(0deg 0% 100% / 7%); color: #bbb; @@ -1330,3 +1338,4 @@ ul#searchresults span.teaser em { + From abd42c5f262dc63c0f771de40c20ac6bbd077285 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 09:22:13 +0300 Subject: [PATCH 0184/1179] Update playground.js --- src/theme/playground.js | 48 +++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index fe0ce65d33f..573011b65a3 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -604,16 +604,18 @@ function typeScript() { const nameLabel = document.getElementById('scriptType'); const errorMessages = { - empty: "Error: Name field cannot be empty.", - regex: "Error: Slash command name must contain only English letters and hyphens.", + empty: "Error: Name cannot be empty.", + regex: "Error: Slash command name must contain only English letters.", length: "Error: Slash command name exceeds 32 characters.", - invalidCallback: "Error: Invalid callback name." + invalidCallback: "Error: Invalid callback name.", + slashStart: "Error: Slash command name must start with /" }; - - deleteError(errorMessages.regex); - deleteError(errorMessages.empty); - deleteError(errorMessages.length); - deleteError(errorMessages.invalidCallback); + + deleteError(errorMessages.regex); + deleteError(errorMessages.empty); + deleteError(errorMessages.length); + deleteError(errorMessages.invalidCallback); + deleteError(errorMessages.slashStart); const callbackKeywords = ['$awaitedCommand', '$awaitedCommandError', '$onJoined', '$onLeave', '$onBanAdd', '$onBanRemove', '$onMessageDelete', '$onInteraction', '$alwaysReply', '$messageContains', '$reaction']; @@ -634,19 +636,26 @@ function typeScript() { } } else if (selectValue === 'slash') { commandType = ' • Slash Command'; - const nameToCheck = nameInputVal.substring(1); - const regex = /^[a-zA-Z-]+$/; - if (!regex.test(nameToCheck)) { - callError(errorMessages.regex, 'error', true); - } else { - deleteError(errorMessages.regex); - } - if (nameInputVal.length > 32) { - callError(errorMessages.length, 'error', true); + if (!nameInputVal.startsWith('/')) { + callError(errorMessages.slashStart, 'error', true); } else { - deleteError(errorMessages.length); - } + deleteError(errorMessages.slashStart); + + const nameToCheck = nameInputVal.substring(1); + const regex = /^[a-zA-Z-]+$/; + + if (!regex.test(nameToCheck)) { + callError(errorMessages.regex, 'error', true); + } else { + deleteError(errorMessages.regex); + } + if (nameInputVal.length > 32) { + callError(errorMessages.length, 'error', true); + } else { + deleteError(errorMessages.length); + } + } } else if (selectValue === 'auto') { const nameToCheck = nameInputVal.substring(1); const regex = /^[a-zA-Z-]+$/; @@ -729,3 +738,4 @@ function editorWrapping() { + From 4a314e17e1d5c83e526e0057c4559ff11f6708d9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 09:24:09 +0300 Subject: [PATCH 0185/1179] Update playground.js --- src/theme/playground.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 573011b65a3..fa088f97e02 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -643,7 +643,7 @@ function typeScript() { deleteError(errorMessages.slashStart); const nameToCheck = nameInputVal.substring(1); - const regex = /^[a-zA-Z-]+$/; + const regex = /^[a-z-]+$/; if (!regex.test(nameToCheck)) { callError(errorMessages.regex, 'error', true); @@ -739,3 +739,4 @@ function editorWrapping() { + From 6e4cd03dae470e4de8702eb5b02da277892240e6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 09:30:07 +0300 Subject: [PATCH 0186/1179] Update playground.js --- src/theme/playground.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index fa088f97e02..20f8450973e 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -549,15 +549,21 @@ function getRelativeTime(date) { function copyText() { const textarea = document.getElementById("editor"); + + if (!textarea) { + console.error("Textarea element with ID 'editor' not found."); + return; + } + textarea.select(); try { document.execCommand("copy"); } catch (err) { console.error("Unable to copy text: ", err); + } finally { + window.getSelection().removeAllRanges(); } - - window.getSelection().removeAllRanges(); } function saveFile() { @@ -740,3 +746,4 @@ function editorWrapping() { + From f6cdb3f609995bf7af0aed65aeed347d94fe7d93 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 09:34:30 +0300 Subject: [PATCH 0187/1179] Update editor.md --- src/tools/editor.md | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 6b2d39acafe..1bb8b82c6a4 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -57,12 +57,37 @@ Here you can use the basic editor features to write codes more conveniently.
- - - - - - +

Settings

+
+

Show or hide a set of useful formatting buttons above the editor.

+ +
+
+
+

Toggles case sensitivity for the find function in the editor.

+ +
+
+
+

Intentionally breaks all links in the editor content (for testing purposes).

+ +
+
+
+

Enable or disable change warnings in the editor.

+ +
+
+
+

Enable or disable displaying errors in the editor.

+ +
+
+
+

Turns text wrapping on or off in the editor.

+ +
+
From 73f4b406ba2d71a414f96db8d285405cf36b48d1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 10:15:06 +0300 Subject: [PATCH 0188/1179] Update chrome.css --- src/theme/css/chrome.css | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index f41c1d4aee3..22382e6c1ec 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1335,6 +1335,33 @@ ul#searchresults span.teaser em { background-color: var(--color3); } +.setting-item { + display: flex; + align-items: center; + margin-bottom: 10px; +} + +.setting-item p { + flex: 1; + margin-right: 10px; + text-align: left; + word-wrap: break-word; + line-height: 1.4; +} + +.setting-item button { + width: 150px; + padding: .75rem; + border-radius: 10px; + box-sizing: border-box; +} + +hr { + border: 0; + height: 1px; + background: #ccc; + margin: 5px 0; +} From ffe0325ccf4ea94cc2f406511c27078af5de00d1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 13:12:06 +0300 Subject: [PATCH 0189/1179] Update chrome.css --- src/theme/css/chrome.css | 45 +++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 22382e6c1ec..af2bbb0ff24 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1335,13 +1335,27 @@ ul#searchresults span.teaser em { background-color: var(--color3); } +#settings { + margin-top: 1rem; + background-color: var(--color3); + border-radius: 10px; + padding: 1rem; +} + +#settings h3 { + padding: 0rem; + margin-bottom: -.5rem; + margin-top: -.1rem; + font-size: 2.5rem; +} + .setting-item { display: flex; align-items: center; - margin-bottom: 10px; + margin-bottom: 1rem; } -.setting-item p { +#settings .setting-item p { flex: 1; margin-right: 10px; text-align: left; @@ -1349,20 +1363,27 @@ ul#searchresults span.teaser em { line-height: 1.4; } -.setting-item button { - width: 150px; +#settings .setting-item button { + transition: 0.2s; + width: 15rem; padding: .75rem; border-radius: 10px; + border: 0; + background: linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%)); box-sizing: border-box; + color: rgb(255 255 255 / 90%); } -hr { - border: 0; - height: 1px; - background: #ccc; - margin: 5px 0; +#settings .setting-item button:hover { + transform: scale(1.025); + transition: 0.2s; + color: #fff; } - - - +#settings hr { + border: 0; + height: 1px; + background: #ccc; + border-radius: 10px; + margin: 5px 0; +} From 9d31e24e8c25bb0f53259e0f9f3e78cc64605e61 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 13:14:16 +0300 Subject: [PATCH 0190/1179] Update editor.md --- src/tools/editor.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 1bb8b82c6a4..e886b65c769 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -60,17 +60,17 @@ Here you can use the basic editor features to write codes more conveniently.

Settings

Show or hide a set of useful formatting buttons above the editor.

- +

Toggles case sensitivity for the find function in the editor.

- +

Intentionally breaks all links in the editor content (for testing purposes).

- +

From 0ceae3db57e25c24be061317523466cfadcf5b5c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 13:14:32 +0300 Subject: [PATCH 0191/1179] Update editor.md --- src/tools/editor.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index e886b65c769..15f04704564 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -87,7 +87,6 @@ Here you can use the basic editor features to write codes more conveniently.

Turns text wrapping on or off in the editor.

-
From f4c50bc5de39511d97cbeda2ac7bc84dd1e7e96d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 13:19:30 +0300 Subject: [PATCH 0192/1179] Update playground.js --- src/theme/playground.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 20f8450973e..f98b583268c 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -737,7 +737,8 @@ function editorWrapping() { findcode.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; const button = document.getElementById('textWrappingButton'); - button.textContent = isWrappingEnabled ? 'Disable Wrapping' : 'Enable Wrapping'; + + button.style.background = isWrappingEnabled ? 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))' : 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; } @@ -747,3 +748,5 @@ function editorWrapping() { + + From 550575f4d2ee575fe226bdd5f19125b0f4c31953 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 13:21:25 +0300 Subject: [PATCH 0193/1179] Update playground.js --- src/theme/playground.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index f98b583268c..1fd69a88398 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -714,6 +714,10 @@ function editorAreaButtons() { buttons.forEach(button => { button.style.display = isHidden ? 'inline-block' : 'none'; + + button.style.background = isHidden + ? 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))' + : 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; }); } @@ -724,6 +728,8 @@ function editorBrokeLinks() { links[i].setAttribute('href', '#'); links[i].style.pointerEvents = 'none'; } + + button.style.background = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))'; } let isWrappingEnabled = true; @@ -750,3 +756,4 @@ function editorWrapping() { + From 16f359f357f7c6ea146f03f9a27655d12f0d872e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:14:00 +0300 Subject: [PATCH 0194/1179] Update playground.js --- src/theme/playground.js | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 1fd69a88398..538bf44136f 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -734,17 +734,26 @@ function editorBrokeLinks() { let isWrappingEnabled = true; -function editorWrapping() { - const textarea = document.getElementById('editor'); - const findcode = document.getElementById('highlightedText'); - isWrappingEnabled = !isWrappingEnabled; +function editorAreaButtons() { + const scriptDiv = document.querySelector('.scriptdiv'); + const buttons = scriptDiv.querySelectorAll('button'); + const isHidden = buttons[0].style.display === 'none'; + + buttons.forEach(button => { + button.style.display = isHidden ? 'inline-block' : 'none'; - textarea.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; - findcode.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; + button.classList.add('color-transition'); - const button = document.getElementById('textWrappingButton'); + setTimeout(() => { + button.style.background = isHidden + ? 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))' + : 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; + }, 10); - button.style.background = isWrappingEnabled ? 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))' : 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; + button.addEventListener('transitionend', () => { + button.classList.remove('color-transition'); + }, { once: true }); + }); } @@ -757,3 +766,5 @@ function editorWrapping() { + + From 2c99de8440fe2a637bfeea0086f0747f746474d7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:22:43 +0300 Subject: [PATCH 0195/1179] Update playground.js --- src/theme/playground.js | 40 +++++++++------------------------------- 1 file changed, 9 insertions(+), 31 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 538bf44136f..965c9ca285c 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -732,39 +732,17 @@ function editorBrokeLinks() { button.style.background = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))'; } -let isWrappingEnabled = true; +let isWrappingEnabled = false; -function editorAreaButtons() { - const scriptDiv = document.querySelector('.scriptdiv'); - const buttons = scriptDiv.querySelectorAll('button'); - const isHidden = buttons[0].style.display === 'none'; +function editorWrapping() { + const textarea = document.getElementById('editor'); + const findcode = document.getElementById('highlightedText'); + isWrappingEnabled = !isWrappingEnabled; - buttons.forEach(button => { - button.style.display = isHidden ? 'inline-block' : 'none'; + textarea.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; + findcode.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; - button.classList.add('color-transition'); + const button = document.getElementById('textWrappingButton'); - setTimeout(() => { - button.style.background = isHidden - ? 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))' - : 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; - }, 10); - - button.addEventListener('transitionend', () => { - button.classList.remove('color-transition'); - }, { once: true }); - }); + button.style.background = isWrappingEnabled ? 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))' : 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; } - - - - - - - - - - - - - From ad39e2a45589f862b38ba56abb11e26f8fb6ea82 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:24:33 +0300 Subject: [PATCH 0196/1179] Update chrome.css --- src/theme/css/chrome.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index af2bbb0ff24..888f3c5e3af 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1374,6 +1374,10 @@ ul#searchresults span.teaser em { color: rgb(255 255 255 / 90%); } +#settings .setting-item #textWrappingButton { + background: linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%)); +} + #settings .setting-item button:hover { transform: scale(1.025); transition: 0.2s; @@ -1387,3 +1391,4 @@ ul#searchresults span.teaser em { border-radius: 10px; margin: 5px 0; } + From 79a1d303e6c3bed422e9a59f8abdc274c72e7c67 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 00:29:31 +0300 Subject: [PATCH 0197/1179] Update chrome.css --- src/theme/css/chrome.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 888f3c5e3af..a8e2d5c68e2 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1374,7 +1374,7 @@ ul#searchresults span.teaser em { color: rgb(255 255 255 / 90%); } -#settings .setting-item #textWrappingButton { +#settings .setting-item #textWrappingButton, #brokeLinksButton { background: linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%)); } From 727cab97703da63615c45880b84588739710f24d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 00:33:48 +0300 Subject: [PATCH 0198/1179] Update playground.js --- src/theme/playground.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 965c9ca285c..72f493f6fa6 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -713,13 +713,13 @@ function editorAreaButtons() { const isHidden = buttons[0].style.display === 'none'; buttons.forEach(button => { - button.style.display = isHidden ? 'inline-block' : 'none'; + button.style.display = isHidden ? 'inline-block' : 'none'; + }); + + const changebutton = document.getElementById('usefulButtonsButton'); + changebutton.style.background = isHidden ? 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))' : 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; +} - button.style.background = isHidden - ? 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))' - : 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; - }); -} function editorBrokeLinks() { const links = document.getElementsByTagName('a'); @@ -728,8 +728,9 @@ function editorBrokeLinks() { links[i].setAttribute('href', '#'); links[i].style.pointerEvents = 'none'; } - - button.style.background = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))'; + + const changebutton = document.getElementById('brokeLinksButton'); + changebutton.style.background = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))'; } let isWrappingEnabled = false; From 9c34cf1ed4c018dc9e768a5e248674b8cf0d9a47 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:01:13 +0300 Subject: [PATCH 0199/1179] Update playground.js --- src/theme/playground.js | 50 ++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 72f493f6fa6..8b74408f1c6 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -242,15 +242,15 @@ let showErrors = true; function editorWarning() { showWarnings = !showWarnings; - const button = document.getElementById('changeWarningsButton'); - button.textContent = showWarnings ? 'Hide Warnings' : 'Show Warnings'; + + callButtonChange('changeWarningsButton', showWarnings); updateErrorVisibility(); } function editorError() { showErrors = !showErrors; - const button = document.getElementById('changeErrorsButton'); - button.textContent = showErrors ? 'Hide Errors' : 'Show Errors'; + + callButtonChange('changeErrorsButton', showErrors); updateErrorVisibility(); } @@ -294,7 +294,7 @@ function callError(message, type = 'error', unique = false) { if (type === 'warn') { errorDiv.style.color = "orange"; } else { - errorDiv.style.color = "red"; // Устанавливаем цвет по умолчанию для ошибок + errorDiv.style.color = "red"; } errorDiv.innerHTML = `${message} ×`; @@ -406,13 +406,7 @@ let caseSensitive = false; function editorFindCase() { caseSensitive = !caseSensitive; - const button = document.getElementById("caseSensitiveButton"); - if (caseSensitive) { - button.textContent = "Case Sensitive ON"; - } else { - button.textContent = "Case Sensitive OFF"; - } - + callButtonChange('caseSensitiveButton', caseSensitive); toggleHighlight(); } @@ -713,12 +707,11 @@ function editorAreaButtons() { const isHidden = buttons[0].style.display === 'none'; buttons.forEach(button => { - button.style.display = isHidden ? 'inline-block' : 'none'; - }); - - const changebutton = document.getElementById('usefulButtonsButton'); - changebutton.style.background = isHidden ? 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))' : 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; -} + button.style.display = isHidden ? 'inline-block' : 'none'; + }); + + callButtonChange('usefulButtonsButton', isHidden); +} function editorBrokeLinks() { @@ -728,9 +721,8 @@ function editorBrokeLinks() { links[i].setAttribute('href', '#'); links[i].style.pointerEvents = 'none'; } - - const changebutton = document.getElementById('brokeLinksButton'); - changebutton.style.background = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))'; + + callButtonChange('brokeLinksButton', 'true'); } let isWrappingEnabled = false; @@ -743,7 +735,19 @@ function editorWrapping() { textarea.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; findcode.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; - const button = document.getElementById('textWrappingButton'); + callButtonChange('textWrappingButton', isWrappingEnabled); +} + +function callButtonChange(buttonName, status) { + const button = document.getElementById(buttonName); + + if (!button) { + console.error(`Failed to find "${buttonName}" button.`); + return; + } + + const activeGradient = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))'; + const inactiveGradient = 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; - button.style.background = isWrappingEnabled ? 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))' : 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; + button.style.background = status ? activeGradient : inactiveGradient; } From 1bf6a5465a492f1d75ff06558cf1a1c848bc0125 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:04:31 +0300 Subject: [PATCH 0200/1179] Update editor.md --- src/tools/editor.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 15f04704564..60a8ddadde3 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -56,38 +56,38 @@ Here you can use the basic editor features to write codes more conveniently.
-
-

Settings

+
+ Settings

Show or hide a set of useful formatting buttons above the editor.

- +

Toggles case sensitivity for the find function in the editor.

- +

Intentionally breaks all links in the editor content (for testing purposes).

- +

Enable or disable change warnings in the editor.

- +

Enable or disable displaying errors in the editor.

- +

Turns text wrapping on or off in the editor.

- +
-
+

Tips

From c9dcb3414075941d69d4cce27de980b6e37e7c24 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:10:55 +0300 Subject: [PATCH 0201/1179] Update editor.md --- src/tools/editor.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 60a8ddadde3..b13dfc0b800 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -60,32 +60,32 @@ Here you can use the basic editor features to write codes more conveniently. Settings

Show or hide a set of useful formatting buttons above the editor.

- +

Toggles case sensitivity for the find function in the editor.

- +

Intentionally breaks all links in the editor content (for testing purposes).

- +

Enable or disable change warnings in the editor.

- +

Enable or disable displaying errors in the editor.

- +

Turns text wrapping on or off in the editor.

- +
From cd27183d33e834d4cd6ae62e6a6cab95033ac5e4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:14:15 +0300 Subject: [PATCH 0202/1179] Update chrome.css --- src/theme/css/chrome.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index a8e2d5c68e2..1f319fdaec9 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1374,7 +1374,7 @@ ul#searchresults span.teaser em { color: rgb(255 255 255 / 90%); } -#settings .setting-item #textWrappingButton, #brokeLinksButton { +#settings .setting-item #textWrappingButton, #settings .setting-item #brokeLinksButton, #settings .setting-item #caseSensitiveButton { background: linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%)); } @@ -1392,3 +1392,4 @@ ul#searchresults span.teaser em { margin: 5px 0; } + From 515735ac8dfbbf81ef3f3fde014dc7cbf31ef7a8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:18:23 +0300 Subject: [PATCH 0203/1179] Update chrome.css --- src/theme/css/chrome.css | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 1f319fdaec9..b41e546406c 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1342,8 +1342,15 @@ ul#searchresults span.teaser em { padding: 1rem; } -#settings h3 { +#settings summary { + user-select: none; + -webkit-user-select: none; + outline: none; + background-color: var(--color3); + border-radius: 10px; + cursor: pointer; padding: 0rem; + padding-bottom: .75rem; margin-bottom: -.5rem; margin-top: -.1rem; font-size: 2.5rem; @@ -1393,3 +1400,4 @@ ul#searchresults span.teaser em { } + From 9820dc969e2b8eaaec4b1a601b0224564aeb5f7c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:25:40 +0300 Subject: [PATCH 0204/1179] Update playground.js --- src/theme/playground.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 8b74408f1c6..3b0dce2bd5b 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -748,6 +748,12 @@ function callButtonChange(buttonName, status) { const activeGradient = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))'; const inactiveGradient = 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; + const extraGradient = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(0 0 0 / 50%))'; - button.style.background = status ? activeGradient : inactiveGradient; + if (button === 'brokeLinksButton') { + button.style.background = extraGradient; + } else { + button.style.background = status ? activeGradient : inactiveGradient; + } } + From 566e076b523c0fb22f72e7adf9cda950f099e91b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:45:09 +0300 Subject: [PATCH 0205/1179] Update playground.js --- src/theme/playground.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 3b0dce2bd5b..933ed6ee3b8 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -750,10 +750,11 @@ function callButtonChange(buttonName, status) { const inactiveGradient = 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; const extraGradient = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(0 0 0 / 50%))'; - if (button === 'brokeLinksButton') { + if (buttonName === 'brokeLinksButton') { button.style.background = extraGradient; } else { button.style.background = status ? activeGradient : inactiveGradient; } } + From 1ff1d31099866cb10b5006dd787b9149d2b2e410 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:52:42 +0300 Subject: [PATCH 0206/1179] Update chrome.css --- src/theme/css/chrome.css | 71 ++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 31 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index b41e546406c..04b0f4f9aea 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1110,6 +1110,7 @@ ul#searchresults span.teaser em { } #text-editorui button { + outline: none; touch-action: manipulation; -webkit-user-select: none; user-select: none; @@ -1207,6 +1208,7 @@ ul#searchresults span.teaser em { } .close-btn { + outline: none; transition: .3s; color: hsl(0deg 0% 100% / 75%); ! important; padding: 1px 7px; @@ -1224,7 +1226,7 @@ ul#searchresults span.teaser em { } .scriptdiv { - position: relative; + position: relative; } .scriptdiv button:hover { @@ -1236,34 +1238,35 @@ ul#searchresults span.teaser em { } .scriptdiv button { - position: absolute; - top: 0.3rem; - user-select: none; - -webkit-user-select: none; - touch-action: manipulation; - outline: none; - color: #fff; - margin: 1.5px 5px; - padding: 5px; - cursor: pointer; - width: 3.2rem; - height: 3.2rem; - font-size: 1.5rem; - border-style: solid; - border-width: 1px; - border-radius: 10px; - border-color: #aeaeae; - background: rgb(255 255 255 / 10%); - opacity: 0.8; - transition: 0.2s; + outline: none; + position: absolute; + top: 0.3rem; + user-select: none; + -webkit-user-select: none; + touch-action: manipulation; + outline: none; + color: #fff; + margin: 1.5px 5px; + padding: 5px; + cursor: pointer; + width: 3.2rem; + height: 3.2rem; + font-size: 1.5rem; + border-style: solid; + border-width: 1px; + border-radius: 10px; + border-color: #aeaeae; + background: rgb(255 255 255 / 10%); + opacity: 0.8; + transition: 0.2s; } .scriptdiv button:nth-of-type(1) { - right: 4rem; + right: 4rem; } .scriptdiv button:nth-of-type(2) { - right: 0.3rem; + right: 0.3rem; } #error-message { @@ -1272,6 +1275,7 @@ ul#searchresults span.teaser em { } #error-message button { + outline: none; transition: .4s; display: inline-block; margin-right: 7.5px; @@ -1307,6 +1311,7 @@ ul#searchresults span.teaser em { } #selectors { + outline: none; user-select: none; -webkit-user-select: none; display: flex; @@ -1318,6 +1323,7 @@ ul#searchresults span.teaser em { } #selectors select { + outline: none; text-decoration: none; touch-action: manipulation; -webkit-tap-highlight-color: transparent; @@ -1331,6 +1337,7 @@ ul#searchresults span.teaser em { } #selectors select option { + outline: none; color: #d3d3d3; background-color: var(--color3); } @@ -1357,20 +1364,21 @@ ul#searchresults span.teaser em { } .setting-item { - display: flex; - align-items: center; - margin-bottom: 1rem; + display: flex; + align-items: center; + margin-bottom: 1rem; } #settings .setting-item p { - flex: 1; - margin-right: 10px; - text-align: left; - word-wrap: break-word; - line-height: 1.4; + flex: 1; + margin-right: 10px; + text-align: left; + word-wrap: break-word; + line-height: 1.4; } #settings .setting-item button { + outline: none; transition: 0.2s; width: 15rem; padding: .75rem; @@ -1401,3 +1409,4 @@ ul#searchresults span.teaser em { + From 2839cf858de62d1b0e1cc1bad61052b30cca429b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:54:40 +0300 Subject: [PATCH 0207/1179] Update chrome.css --- src/theme/css/chrome.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 04b0f4f9aea..e9b071e2654 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1091,6 +1091,8 @@ ul#searchresults span.teaser em { } #text-editorui p { + user-select: none; + -webkit-user-select: none; margin-bottom: -.5rem; margin-top: .5rem; font-size: 1rem; @@ -1410,3 +1412,4 @@ ul#searchresults span.teaser em { + From db6a04992f439edbe8740e0b44c66ea760d0ed80 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:56:46 +0300 Subject: [PATCH 0208/1179] Update playground.js --- src/theme/playground.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 933ed6ee3b8..8b06cf25f07 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -541,7 +541,7 @@ function getRelativeTime(date) { return isFuture ? 'Soon' : 'Just now'; } -function copyText() { +function copyCodeText() { const textarea = document.getElementById("editor"); if (!textarea) { @@ -758,3 +758,4 @@ function callButtonChange(buttonName, status) { } + From e04bbbf2151c76c4ea3f2730943aeba6cad7cbc4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:57:22 +0300 Subject: [PATCH 0209/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index b13dfc0b800..8ac8c645f2e 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -32,7 +32,7 @@ Here you can use the basic editor features to write codes more conveniently.


- +
From ce95c99f9a6327bc3b6858c149e6c4996befb3a2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:31:40 +0300 Subject: [PATCH 0210/1179] Update chrome.css --- src/theme/css/chrome.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index e9b071e2654..332094f3563 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1404,7 +1404,7 @@ ul#searchresults span.teaser em { #settings hr { border: 0; height: 1px; - background: #ccc; + background: hsl(0deg 0% 100% / 20%); border-radius: 10px; margin: 5px 0; } @@ -1413,3 +1413,4 @@ ul#searchresults span.teaser em { + From 5aa93650b61fa9a7730896fad856f72f44f6b4f9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:35:11 +0300 Subject: [PATCH 0211/1179] Update chrome.css --- src/theme/css/chrome.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 332094f3563..220886534ee 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1312,6 +1312,12 @@ ul#searchresults span.teaser em { font-size: 0.8em; } +@media (max-width: 950px) { + #nameScript span { + top: -45%; + } +} + #selectors { outline: none; user-select: none; @@ -1414,3 +1420,4 @@ ul#searchresults span.teaser em { + From 6fa1cc5699138050e94be18c2c2f9ac3cad5dd44 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:38:38 +0300 Subject: [PATCH 0212/1179] Update editor.md --- src/tools/editor.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 8ac8c645f2e..a5e74e82980 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,6 +1,12 @@ # Text Editor Here you can use the basic editor features to write codes more conveniently. - + + +

Words: 0

Spaces: 0

From c571886dcc2f064f68083830fd92ded7dec036c9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:49:47 +0300 Subject: [PATCH 0213/1179] Update autocomplete.js --- src/theme/autocomplete.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 6bff2519a9f..52d675b4241 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -51,3 +51,11 @@ function autocomplete() { } autocomplete(); + +window.addEventListener('beforeunload', function (event) { + event.preventDefault(); + event.returnValue = ''; + const confirmationMessage = 'Are you sure you want to leave the page? All unsaved changes will be lost.'; + return confirmationMessage; +}); + From d5bd0509f6bfd49073b9533a71f12e43a6760460 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:57:41 +0300 Subject: [PATCH 0214/1179] Update chrome.css --- src/theme/css/chrome.css | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 220886534ee..ca8c9b2ba34 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1401,6 +1401,23 @@ ul#searchresults span.teaser em { background: linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%)); } +@media (max-width: 475px) { + .setting-item { + flex-direction: column; + align-items: flex-start; + } + + #settings .setting-item p { + text-align: center; + margin-right: 0; + margin-bottom: 0.5rem; + } + + #settings .setting-item button { + width: 100%; + } +} + #settings .setting-item button:hover { transform: scale(1.025); transition: 0.2s; @@ -1421,3 +1438,4 @@ ul#searchresults span.teaser em { + From 9ce30c373fcec10b26f46d9150fc3f70536a8594 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:00:51 +0300 Subject: [PATCH 0215/1179] Update playground.js --- src/theme/playground.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 8b06cf25f07..0aad8d00707 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -357,13 +357,14 @@ function checkBrackets() { let dollarCount = 0; let openBrackets = 0; let closeBrackets = 0; + let lastOpenBracketLine = -1; const errorMessageElement = document.getElementById("error-message"); errorMessageElement.innerHTML = ""; errorMessageElement.style.color = "black"; if (textBytes > 65536) { - callError("Error: Text exceeds the allowed size (65536 bytes)."); + callError("Error: Text exceeds allowed size (65536 bytes)."); } if (text.indexOf('$') === -1 && text.length > 2000) { @@ -380,6 +381,7 @@ function checkBrackets() { } } else if (line[j] === '[') { openBrackets++; + lastOpenBracketLine = i + 1; if (j + 1 < line.length && line[j + 1] === ']') { if (openBrackets <= dollarCount) { callError(`Warning: Empty brackets [] detected on line ${i + 1}.`, 'warn'); @@ -396,7 +398,7 @@ function checkBrackets() { if (openBrackets <= dollarCount) { if (closeBrackets < openBrackets) { - callError("Error: Not all open brackets are closed."); + callError(`Error: Not all open brackets are closed. Last opened on line ${lastOpenBracketLine}.`); } } } @@ -759,3 +761,4 @@ function callButtonChange(buttonName, status) { + From 4967df22179713d54f36db62ce3fdfffa2aed4b1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:02:37 +0300 Subject: [PATCH 0216/1179] Update chrome.css --- src/theme/css/chrome.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index ca8c9b2ba34..858e8fd71ac 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1331,6 +1331,7 @@ ul#searchresults span.teaser em { } #selectors select { + cursor: pointer; outline: none; text-decoration: none; touch-action: manipulation; @@ -1386,6 +1387,7 @@ ul#searchresults span.teaser em { } #settings .setting-item button { + cursor: pointer; outline: none; transition: 0.2s; width: 15rem; @@ -1439,3 +1441,4 @@ ul#searchresults span.teaser em { + From 95c05aa6381bc80021fe4df963d4a0ae61ebe9a9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:08:11 +0300 Subject: [PATCH 0217/1179] Update editor.md --- src/tools/editor.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index a5e74e82980..e6fc04ebb4e 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -65,7 +65,7 @@ Here you can use the basic editor features to write codes more conveniently.
Settings
-

Show or hide a set of useful formatting buttons above the editor.

+

Toggles the visibility of the editor's useful buttons panel (save as file, copy text).


@@ -75,22 +75,22 @@ Here you can use the basic editor features to write codes more conveniently.

-

Intentionally breaks all links in the editor content (for testing purposes).

+

Disables all links on the page to avoid misclicking.


-

Enable or disable change warnings in the editor.

+

Displaying warnings.


-

Enable or disable displaying errors in the editor.

+

Displaying errors.


-

Turns text wrapping on or off in the editor.

+

Text wrapping in text editor.

From 3f73d31a36da95eee65e917cbcf7c02e635f53b4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:10:00 +0300 Subject: [PATCH 0218/1179] Update autocomplete.js --- src/theme/autocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 52d675b4241..163d936321a 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -55,7 +55,7 @@ autocomplete(); window.addEventListener('beforeunload', function (event) { event.preventDefault(); event.returnValue = ''; - const confirmationMessage = 'Are you sure you want to leave the page? All unsaved changes will be lost.'; + const confirmationMessage = 'Are you sure you want to leave the page?'; return confirmationMessage; }); From 4b3a7d7f41c497b03d056e26f105950394e247fb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:15:01 +0300 Subject: [PATCH 0219/1179] Update editor.md --- src/tools/editor.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index e6fc04ebb4e..fb12bdcca05 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -93,6 +93,16 @@ Here you can use the basic editor features to write codes more conveniently.

Text wrapping in text editor.

+
+
+

Highlighting in text editor.

+ +
+
+
+

Suggest functions as you type.

+ +
From 4e2c676fe1dd64151c1925e93bbf5463f6fc3768 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:06:23 +0300 Subject: [PATCH 0220/1179] Update editor.md --- src/tools/editor.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index fb12bdcca05..bfe5a778253 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -103,6 +103,9 @@ Here you can use the basic editor features to write codes more conveniently.

Suggest functions as you type.

+
+

Loading...

+
From bb7811d547493cc98138ab054799e0227ba4e6b8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:07:05 +0300 Subject: [PATCH 0221/1179] Update autocomplete.js --- src/theme/autocomplete.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 163d936321a..89875e60e2b 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -59,3 +59,17 @@ window.addEventListener('beforeunload', function (event) { return confirmationMessage; }); +function updateInternetConnection() { + const text = document.getElementById('internetConnection'); + + if (window.navigator.onLine) { + text.textContent = '👍 All services work stably.'; + text.style.color = 'green'; + } else { + text.textContent = '🛜 Check your internet connection! It may affect some services...'; + text.style.color = 'red'; + } +} + +setInterval(updateInternetConnection, 1000); + From 2894833d041f6db9e231ef20502f95cf0caa1686 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:12:10 +0300 Subject: [PATCH 0222/1179] Update autocomplete.js --- src/theme/autocomplete.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 89875e60e2b..b088ab432b2 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -53,6 +53,12 @@ function autocomplete() { autocomplete(); window.addEventListener('beforeunload', function (event) { + const textarea = document.getElementById('editor'); + + if (textarea.value.trim() === '') { + return; + } + event.preventDefault(); event.returnValue = ''; const confirmationMessage = 'Are you sure you want to leave the page?'; From 352a9d4b31c5ed8ebb170f1f5cb4374ec963cca6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:15:29 +0300 Subject: [PATCH 0223/1179] Update chrome.css --- src/theme/css/chrome.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 858e8fd71ac..9d2671e7715 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1083,6 +1083,8 @@ ul#searchresults span.teaser em { } #text-editorui { + user-select: none; + -webkit-user-select: none; margin-top: 1rem; margin-bottom: 1rem; background-color: var(--color3); @@ -1210,6 +1212,8 @@ ul#searchresults span.teaser em { } .close-btn { + user-select: none; + -webkit-user-select: none; outline: none; transition: .3s; color: hsl(0deg 0% 100% / 75%); ! important; @@ -1442,3 +1446,4 @@ ul#searchresults span.teaser em { + From 1a3316b7db983ede95ed41fd52564f7bb8cff5be Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:30:47 +0300 Subject: [PATCH 0224/1179] Update chrome.css --- src/theme/css/chrome.css | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 9d2671e7715..1ec45ee9cd5 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1438,12 +1438,13 @@ ul#searchresults span.teaser em { margin: 5px 0; } - - - - - - - - - +.setting-item:last-child { + user-select: none; + -webkit-user-select: none; + margin-top: -2.25rem; + margin-bottom: -1.25rem; + display: flex; + justify-content: center; + text-align: center; + font-size: 1.3rem; +} From 47c3e9f5a69a3888171094edba6c3a205f0c564f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:35:40 +0300 Subject: [PATCH 0225/1179] Update playground.js --- src/theme/playground.js | 62 +++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 0aad8d00707..42701a0ee7e 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -412,6 +412,8 @@ function editorFindCase() { toggleHighlight(); } +let highlightEnabled = true; + function toggleHighlight() { const highlightedTextDiv = document.getElementById("highlightedText"); const text = document.getElementById("editor").value; @@ -419,11 +421,10 @@ function toggleHighlight() { let highlighted = text; let matches = 0; - if (searchText) { + if (highlightEnabled && searchText) { try { const flags = caseSensitive ? 'g' : 'gi'; const regex = new RegExp(searchText, flags); - highlighted = text.replace(regex, (match) => { matches++; return `${match}`; @@ -432,15 +433,15 @@ function toggleHighlight() { const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); const flags = caseSensitive ? 'g' : 'gi'; const regex = new RegExp(escapedSearchText, flags); - highlighted = text.replace(regex, (match) => { matches++; return `${match}`; }); } + } else if (!highlightEnabled) { + highlighted = text; } - // Channel & User mentions const mentionRegex = /<@(.*?)>/g; highlighted = highlighted.replace(mentionRegex, (match, content) => { return `@${content}`; @@ -451,66 +452,60 @@ function toggleHighlight() { return `#${content}`; }); - // ** const boldRegex = /\*\*(.*?)\*\*/g; highlighted = highlighted.replace(boldRegex, (match, content) => { return `${content}`; }); - // * const italicRegex = /\*(.*?)\*/g; highlighted = highlighted.replace(italicRegex, (match, content) => { return `${content}`; }); - - // ~~ + const delRegex = /~~(.*?)~~/g; highlighted = highlighted.replace(delRegex, (match, content) => { return `${content}`; }); - // __ const underRegex = /__(.*?)__/g; highlighted = highlighted.replace(underRegex, (match, content) => { return `${content}`; }); - // Link const linkRegex = /(https?:\/\/[^\s]+)/g; highlighted = highlighted.replace(linkRegex, (url) => { return `${url}`; }); - // Unixtime const timestampRegex = //g; highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { - const date = new Date(parseInt(timestamp) * 1000); - let formattedDate = ""; - - switch (format) { - case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; - case 'd': formattedDate = date.toLocaleDateString(); break; - case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; - case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'R': formattedDate = getRelativeTime(date); break; - default: formattedDate = "Invalid format"; - } - return `${formattedDate}`; + const date = new Date(parseInt(timestamp) * 1000); + let formattedDate = ""; + + switch (format) { + case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; + case 'd': formattedDate = date.toLocaleDateString(); break; + case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; + case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'R': formattedDate = getRelativeTime(date); break; + default: formattedDate = "Invalid format"; + } + return `${formattedDate}`; }); - // Lines - const lines = highlighted.split('\n'); - let numberedText = ""; - for (let i = 0; i < lines.length; i++) { - numberedText += `${i + 1} ${lines[i]}
`; - } - const resultsString = `

Results: ${matches}

`; - highlightedTextDiv.innerHTML = resultsString + numberedText; + highlightedTextDiv.innerHTML = resultsString + highlighted; } +function TextHighlighting { + highlightEnabled = !highlightEnabled; + callButtonChange('findHighlightingButton', highlightEnabled); + toggleHighlight(); +} + + function getRelativeTime(date) { const now = new Date(); const diffInSeconds = Math.round((date - now) / 1000); @@ -762,3 +757,4 @@ function callButtonChange(buttonName, status) { + From 0510c70a60437ab53f6653fbec7bf9c4b33cc732 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:36:11 +0300 Subject: [PATCH 0226/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index bfe5a778253..a4da5fe18cc 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -96,7 +96,7 @@ Here you can use the basic editor features to write codes more conveniently.

Highlighting in text editor.

- +

From 6acb153d872ea1a62b23c9695c6174241e79ca64 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:42:12 +0300 Subject: [PATCH 0227/1179] Update playground.js --- src/theme/playground.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 42701a0ee7e..b3e4bfc54f9 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -499,7 +499,7 @@ function toggleHighlight() { highlightedTextDiv.innerHTML = resultsString + highlighted; } -function TextHighlighting { +function textHighlighting() { highlightEnabled = !highlightEnabled; callButtonChange('findHighlightingButton', highlightEnabled); toggleHighlight(); @@ -758,3 +758,4 @@ function callButtonChange(buttonName, status) { + From 501514277fe86628bf452519285cb07d49201dd8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:42:32 +0300 Subject: [PATCH 0228/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index a4da5fe18cc..938e17dd91e 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -96,7 +96,7 @@ Here you can use the basic editor features to write codes more conveniently.

Highlighting in text editor.

- +

From f348b094ef528429c6b01a9cd65b152a457be1ae Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 19:56:34 +0300 Subject: [PATCH 0229/1179] Update playground.js --- src/theme/playground.js | 182 ++++++++++++++++++++++------------------ 1 file changed, 99 insertions(+), 83 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index b3e4bfc54f9..499411c4a77 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -414,89 +414,105 @@ function editorFindCase() { let highlightEnabled = true; -function toggleHighlight() { - const highlightedTextDiv = document.getElementById("highlightedText"); - const text = document.getElementById("editor").value; - const searchText = document.getElementById("searchText").value; - let highlighted = text; - let matches = 0; - - if (highlightEnabled && searchText) { - try { - const flags = caseSensitive ? 'g' : 'gi'; - const regex = new RegExp(searchText, flags); - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } catch (e) { - const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const flags = caseSensitive ? 'g' : 'gi'; - const regex = new RegExp(escapedSearchText, flags); - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } - } else if (!highlightEnabled) { - highlighted = text; - } - - const mentionRegex = /<@(.*?)>/g; - highlighted = highlighted.replace(mentionRegex, (match, content) => { - return `@${content}`; - }); - - const channelRegex = /<#(.*?)>/g; - highlighted = highlighted.replace(channelRegex, (match, content) => { - return `#${content}`; - }); - - const boldRegex = /\*\*(.*?)\*\*/g; - highlighted = highlighted.replace(boldRegex, (match, content) => { - return `${content}`; - }); - - const italicRegex = /\*(.*?)\*/g; - highlighted = highlighted.replace(italicRegex, (match, content) => { - return `${content}`; - }); - - const delRegex = /~~(.*?)~~/g; - highlighted = highlighted.replace(delRegex, (match, content) => { - return `${content}`; - }); - - const underRegex = /__(.*?)__/g; - highlighted = highlighted.replace(underRegex, (match, content) => { - return `${content}`; - }); - - const linkRegex = /(https?:\/\/[^\s]+)/g; - highlighted = highlighted.replace(linkRegex, (url) => { - return `${url}`; - }); - - const timestampRegex = //g; - highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { - const date = new Date(parseInt(timestamp) * 1000); - let formattedDate = ""; - - switch (format) { - case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; - case 'd': formattedDate = date.toLocaleDateString(); break; - case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; - case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'R': formattedDate = getRelativeTime(date); break; - default: formattedDate = "Invalid format"; - } - return `${formattedDate}`; - }); - - const resultsString = `

Results: ${matches}

`; - highlightedTextDiv.innerHTML = resultsString + highlighted; +function toggleHighlight() { + const highlightedTextDiv = document.getElementById("highlightedText"); + const text = document.getElementById("editor").value; + const searchText = document.getElementById("searchText").value; + let highlighted = text; + let matches = 0; + + if (searchText) { + try { + const flags = caseSensitive ? 'g' : 'gi'; + const regex = new RegExp(searchText, flags); + + highlighted = text.replace(regex, (match) => { + matches++; + return `${match}`; + }); + } catch (e) { + const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const flags = caseSensitive ? 'g' : 'gi'; + const regex = new RegExp(escapedSearchText, flags); + + highlighted = text.replace(regex, (match) => { + matches++; + return `${match}`; + }); + } + } + + if (highlightEnabled) { + // Channel & User mentions + const mentionRegex = /<@(.*?)>/g; + highlighted = highlighted.replace(mentionRegex, (match, content) => { + return `@${content}`; + }); + + const channelRegex = /<#(.*?)>/g; + highlighted = highlighted.replace(channelRegex, (match, content) => { + return `#${content}`; + }); + + // ** + const boldRegex = /\*\*(.*?)\*\*/g; + highlighted = highlighted.replace(boldRegex, (match, content) => { + return `${content}`; + }); + + // * + const italicRegex = /\*(.*?)\*/g; + highlighted = highlighted.replace(italicRegex, (match, content) => { + return `${content}`; + }); + + // ~~ + const delRegex = /~~(.*?)~~/g; + highlighted = highlighted.replace(delRegex, (match, content) => { + return `${content}`; + }); + + // __ + const underRegex = /__(.*?)__/g; + highlighted = highlighted.replace(underRegex, (match, content) => { + return `${content}`; + }); + + // Unixtime + const timestampRegex = //g; + highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { + const date = new Date(parseInt(timestamp) * 1000); + let formattedDate = ""; + + switch (format) { + case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; + case 'd': formattedDate = date.toLocaleDateString(); break; + case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; + case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'R': formattedDate = getRelativeTime(date); break; + default: formattedDate = "Invalid format"; + } + return `${formattedDate}`; + }); + } + + // Link + const linkRegex = /(https?:\/\/[^\s]+)/g; + highlighted = highlighted.replace(linkRegex, (url) => { + return `${url}`; + }); + + // Lines + const lines = highlighted.split('\n'); + let numberedText = ""; + for (let i = 0; i < lines.length; i++) { + numberedText += `${i + 1} ${lines[i]}
`; + } + + const resultsString = `

Results: ${matches}

`; + highlightedTextDiv.innerHTML = resultsString + numberedText; } function textHighlighting() { From 615de2f9cfbcddd5536a86a564a659946af9f3e9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 20:02:18 +0300 Subject: [PATCH 0230/1179] Update autocomplete.js --- src/theme/autocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index b088ab432b2..4e57b0cb8dc 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -26,7 +26,7 @@ function autocomplete() { } searchTerm = inputText.substring(dollarIndex).toLowerCase(); - autocompleteOutput.innerHTML = ''; + autocompleteOutput.textContent = 'Hello'; const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); From 45625246baf7edeea31263ce1c951b96f2312758 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 28 Aug 2025 22:27:48 +0300 Subject: [PATCH 0231/1179] Update autocomplete.js --- src/theme/autocomplete.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 4e57b0cb8dc..d4ec91b82c1 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -1,11 +1,6 @@ function autocomplete() { if (2 > 1) { const sectionList = document.querySelector('ol.section'); - - if (!sectionList) { - console.error("Не найден элемент
    ."); - return; - } const html = sectionList.innerHTML; const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) .map(a => a.textContent) @@ -50,7 +45,9 @@ function autocomplete() { } } -autocomplete(); +document.addEventListener("DOMContentLoaded", function() { + autocomplete(); +}); window.addEventListener('beforeunload', function (event) { const textarea = document.getElementById('editor'); From 9a73c7e087a4189f96b16e8bac781d725dddee3c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 09:12:33 +0300 Subject: [PATCH 0232/1179] Update autocomplete.js --- src/theme/autocomplete.js | 77 +++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index d4ec91b82c1..7bd8a452137 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -1,48 +1,47 @@ function autocomplete() { - if (2 > 1) { - const sectionList = document.querySelector('ol.section'); - const html = sectionList.innerHTML; - const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) - .map(a => a.textContent) - .filter(text => text.startsWith('$')); + console.log("Loaded 1") + const sectionList = document.querySelector('ol.section'); + const html = sectionList.innerHTML; + const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) + .map(a => a.textContent) + .filter(text => text.startsWith('$')); - const textarea = document.getElementById('editor'); - const autocompleteOutput = document.getElementById('autocomplete'); - - textarea.addEventListener('input', function (event) { - const inputText = event.target.value; - const cursorPosition = textarea.selectionStart; - let searchTerm = ''; - let dollarIndex = inputText.lastIndexOf('$', cursorPosition); - - if (dollarIndex === -1) { + const textarea = document.getElementById('editor'); + const autocompleteOutput = document.getElementById('autocomplete'); + + textarea.addEventListener('input', function (event) { + console.log("Loaded 2") + const inputText = event.target.value; + const cursorPosition = textarea.selectionStart; + let searchTerm = ''; + let dollarIndex = inputText.lastIndexOf('$', cursorPosition); + + if (dollarIndex === -1) { + autocompleteOutput.innerHTML = ''; + return; + } + + searchTerm = inputText.substring(dollarIndex).toLowerCase(); + autocompleteOutput.textContent = 'Hello'; + + const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); + + matchingFunctions.forEach(func => { + const span = document.createElement('span'); + span.textContent = func; + span.style.backgroundColor = 'lightgray'; + span.style.marginRight = '5px'; + span.style.cursor = 'pointer'; + span.addEventListener('click', function () { + textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); + textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; autocompleteOutput.innerHTML = ''; - return; - } - - searchTerm = inputText.substring(dollarIndex).toLowerCase(); - autocompleteOutput.textContent = 'Hello'; - - const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - - matchingFunctions.forEach(func => { - const span = document.createElement('span'); - span.textContent = func; - span.style.backgroundColor = 'lightgray'; - span.style.marginRight = '5px'; - span.style.cursor = 'pointer'; - span.addEventListener('click', function () { - textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); - textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - autocompleteOutput.innerHTML = ''; - textarea.focus(); - }); - - autocompleteOutput.appendChild(span); + textarea.focus(); }); + autocompleteOutput.appendChild(span); }); - } + }); } document.addEventListener("DOMContentLoaded", function() { From 1947ff27ab0e584fcb0d11f08682d143e8fa2e46 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 09:19:32 +0300 Subject: [PATCH 0233/1179] Update autocomplete.js --- src/theme/autocomplete.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 7bd8a452137..cf17f159a4d 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -18,16 +18,20 @@ function autocomplete() { if (dollarIndex === -1) { autocompleteOutput.innerHTML = ''; + console.log("idk") return; } searchTerm = inputText.substring(dollarIndex).toLowerCase(); - autocompleteOutput.textContent = 'Hello'; + autocompleteOutput.innerHTML = ''; const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - + + console.log("45656556856") matchingFunctions.forEach(func => { const span = document.createElement('span'); + console.log("Found!!!!!") + console.log(func) span.textContent = func; span.style.backgroundColor = 'lightgray'; span.style.marginRight = '5px'; From 056f60bcf4f845325cd500e3fb4caed86fec7075 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 09:52:56 +0300 Subject: [PATCH 0234/1179] Update autocomplete.js --- src/theme/autocomplete.js | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index cf17f159a4d..57df406373d 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -1,11 +1,30 @@ function autocomplete() { - console.log("Loaded 1") - const sectionList = document.querySelector('ol.section'); + const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')) + .find(li => { + const div = li.querySelector('div'); + return div && div.textContent.trim() === 'Functions'; + }); + + if (!functionsHeader) { + console.warn('Не найден элемент списка (li.chapter-item), содержащий
    Functions
    .'); + return; + } + + const sectionList = functionsHeader.nextElementSibling; + + if (!sectionList) { + console.warn('Не найден список (ol) после заголовка Functions.'); + return; + } + const html = sectionList.innerHTML; + const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) .map(a => a.textContent) .filter(text => text.startsWith('$')); + console.log(`Найдено функций (начинаются с $): ${functions.length}`); + const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); @@ -18,7 +37,6 @@ function autocomplete() { if (dollarIndex === -1) { autocompleteOutput.innerHTML = ''; - console.log("idk") return; } @@ -26,12 +44,9 @@ function autocomplete() { autocompleteOutput.innerHTML = ''; const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - - console.log("45656556856") + matchingFunctions.forEach(func => { const span = document.createElement('span'); - console.log("Found!!!!!") - console.log(func) span.textContent = func; span.style.backgroundColor = 'lightgray'; span.style.marginRight = '5px'; From 6ce9bb80c07b6953141e6c2378803b43367ffb60 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 09:59:58 +0300 Subject: [PATCH 0235/1179] Update autocomplete.js --- src/theme/autocomplete.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 57df406373d..6d44e16f615 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -29,7 +29,6 @@ function autocomplete() { const autocompleteOutput = document.getElementById('autocomplete'); textarea.addEventListener('input', function (event) { - console.log("Loaded 2") const inputText = event.target.value; const cursorPosition = textarea.selectionStart; let searchTerm = ''; @@ -48,9 +47,6 @@ function autocomplete() { matchingFunctions.forEach(func => { const span = document.createElement('span'); span.textContent = func; - span.style.backgroundColor = 'lightgray'; - span.style.marginRight = '5px'; - span.style.cursor = 'pointer'; span.addEventListener('click', function () { textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; From 601c009967ea2878f3d5a3b7a70670411d0a5639 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 10:11:28 +0300 Subject: [PATCH 0236/1179] Update chrome.css --- src/theme/css/chrome.css | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 1ec45ee9cd5..7b50c2e3029 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1448,3 +1448,20 @@ ul#searchresults span.teaser em { text-align: center; font-size: 1.3rem; } + +#autocomplete span { + display: inline-block; + color: var(--color1); + background: hsl(0deg 0% 100% / 10%) !important; + border-radius: 10px; + margin-bottom: .5rem; + cursor: pointer; + padding: .5rem; +} + +#autocomplete { + white-space: normal; + width: 100%; + margin-bottom: 3.5rem; + margin-top: -1rem; +} From 92c0a3221e20c33b11fea011e93acad5072f1b47 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 11:12:04 +0300 Subject: [PATCH 0237/1179] Update autocomplete.js --- src/theme/autocomplete.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 6d44e16f615..6a8affca27c 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -6,14 +6,14 @@ function autocomplete() { }); if (!functionsHeader) { - console.warn('Не найден элемент списка (li.chapter-item), содержащий
    Functions
    .'); + console.warn('Element not found.'); return; } const sectionList = functionsHeader.nextElementSibling; if (!sectionList) { - console.warn('Не найден список (ol) после заголовка Functions.'); + console.warn('Functions arent found.'); return; } @@ -23,8 +23,6 @@ function autocomplete() { .map(a => a.textContent) .filter(text => text.startsWith('$')); - console.log(`Найдено функций (начинаются с $): ${functions.length}`); - const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); @@ -44,7 +42,9 @@ function autocomplete() { const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - matchingFunctions.forEach(func => { + const displayedFunctions = matchingFunctions.slice(0, 5); + + displayedFunctions.forEach(func => { const span = document.createElement('span'); span.textContent = func; span.addEventListener('click', function () { From fe0482ca410739359f62e939a7ebf8cd796f1237 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 11:21:25 +0300 Subject: [PATCH 0238/1179] Update chrome.css --- src/theme/css/chrome.css | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 7b50c2e3029..4dabd2eba70 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1449,19 +1449,30 @@ ul#searchresults span.teaser em { font-size: 1.3rem; } +#autocomplete { + white-space: normal; + width: 100%; + margin-bottom: 3rem; + margin-top: -1.75rem; + display: flex; + justify-content: center; + flex-wrap: wrap; +} + #autocomplete span { - display: inline-block; - color: var(--color1); - background: hsl(0deg 0% 100% / 10%) !important; - border-radius: 10px; - margin-bottom: .5rem; - cursor: pointer; - padding: .5rem; + display: inline-block; + color: var(--color1); + background: hsl(0deg 0% 100% / 10%) !important; + border-radius: 10px; + margin-bottom: .5rem; + cursor: pointer; + padding: .5rem; + margin-right: .75rem; + transition: 0.2s; } -#autocomplete { - white-space: normal; - width: 100%; - margin-bottom: 3.5rem; - margin-top: -1rem; +#autocomplete span:hover { + transform: scale(1.025); + transition: 0.2s; } + From ed871cb4e6e2d8b6ba7b90b0e8f0a441c44050b8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 11:35:25 +0300 Subject: [PATCH 0239/1179] Update chrome.css --- src/theme/css/chrome.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 4dabd2eba70..cfa6e15cb13 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1109,7 +1109,7 @@ ul#searchresults span.teaser em { outline: none; border-radius: 10px; border-width: 0; - width: 99%; + width: 99.5%; height: 3rem; } @@ -1476,3 +1476,4 @@ ul#searchresults span.teaser em { transition: 0.2s; } + From 0cca9e0e5f00852cfcab71b007bc2238792e827a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 11:41:45 +0300 Subject: [PATCH 0240/1179] Update autocomplete.js --- src/theme/autocomplete.js | 87 ++++++++++++++++++++++----------------- 1 file changed, 49 insertions(+), 38 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 6a8affca27c..d976db0b762 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -1,61 +1,72 @@ -function autocomplete() { +let autocompleteEnabled = true; + +function changeAutocomplete() { + autocompleteEnabled = !autocompleteEnabled; + + const textarea = document.getElementById('editor'); + + if (!textarea) { + console.error('Textarea element with id "editor" not found.'); + return; + } + + if (autocompleteEnabled) { + textarea.addEventListener('input', handleInput); + } else { + textarea.removeEventListener('input', handleInput); + document.getElementById('autocomplete').innerHTML = ''; + } +} + +function handleInput(event) { + if (autocompleteEnabled) { + autocomplete(event); + } +} + +function autocomplete(event) { const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')) .find(li => { - const div = li.querySelector('div'); + const div = li.querySelector('div'); return div && div.textContent.trim() === 'Functions'; }); - if (!functionsHeader) { - console.warn('Element not found.'); - return; - } + if (!functionsHeader) return console.warn('Element not found.'); const sectionList = functionsHeader.nextElementSibling; - - if (!sectionList) { - console.warn('Functions arent found.'); - return; - } + if (!sectionList) return console.warn('Functions arent found.'); const html = sectionList.innerHTML; - const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) .map(a => a.textContent) .filter(text => text.startsWith('$')); const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); + const inputText = event.target.value; + const cursorPosition = textarea.selectionStart; + let searchTerm = ''; + let dollarIndex = inputText.lastIndexOf('$', cursorPosition); - textarea.addEventListener('input', function (event) { - const inputText = event.target.value; - const cursorPosition = textarea.selectionStart; - let searchTerm = ''; - let dollarIndex = inputText.lastIndexOf('$', cursorPosition); + if (dollarIndex === -1) return autocompleteOutput.innerHTML = ''; - if (dollarIndex === -1) { - autocompleteOutput.innerHTML = ''; - return; - } - - searchTerm = inputText.substring(dollarIndex).toLowerCase(); - autocompleteOutput.innerHTML = ''; - - const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); + searchTerm = inputText.substring(dollarIndex).toLowerCase(); + autocompleteOutput.innerHTML = ''; - const displayedFunctions = matchingFunctions.slice(0, 5); + const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); + const displayedFunctions = matchingFunctions.slice(0, 5); - displayedFunctions.forEach(func => { - const span = document.createElement('span'); - span.textContent = func; - span.addEventListener('click', function () { - textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); - textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - autocompleteOutput.innerHTML = ''; - textarea.focus(); - }); - - autocompleteOutput.appendChild(span); + displayedFunctions.forEach(func => { + const span = document.createElement('span'); + span.textContent = func; + span.addEventListener('click', function () { + textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); + textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; + autocompleteOutput.innerHTML = ''; + textarea.focus(); }); + + autocompleteOutput.appendChild(span); }); } From da279911bb42052dddad8cbbe8e487ca7fff117c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 11:42:23 +0300 Subject: [PATCH 0241/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 938e17dd91e..a445d822ad7 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -101,7 +101,7 @@ Here you can use the basic editor features to write codes more conveniently.

    Suggest functions as you type.

    - +

    Loading...

    From 3248980268792928fc595d1846e9e78f6f7f5491 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 13:42:37 +0300 Subject: [PATCH 0242/1179] Update autocomplete.js --- src/theme/autocomplete.js | 87 +++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 49 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index d976db0b762..6a8affca27c 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -1,72 +1,61 @@ -let autocompleteEnabled = true; - -function changeAutocomplete() { - autocompleteEnabled = !autocompleteEnabled; - - const textarea = document.getElementById('editor'); - - if (!textarea) { - console.error('Textarea element with id "editor" not found.'); - return; - } - - if (autocompleteEnabled) { - textarea.addEventListener('input', handleInput); - } else { - textarea.removeEventListener('input', handleInput); - document.getElementById('autocomplete').innerHTML = ''; - } -} - -function handleInput(event) { - if (autocompleteEnabled) { - autocomplete(event); - } -} - -function autocomplete(event) { +function autocomplete() { const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')) .find(li => { - const div = li.querySelector('div'); + const div = li.querySelector('div'); return div && div.textContent.trim() === 'Functions'; }); - if (!functionsHeader) return console.warn('Element not found.'); + if (!functionsHeader) { + console.warn('Element not found.'); + return; + } const sectionList = functionsHeader.nextElementSibling; - if (!sectionList) return console.warn('Functions arent found.'); + + if (!sectionList) { + console.warn('Functions arent found.'); + return; + } const html = sectionList.innerHTML; + const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) .map(a => a.textContent) .filter(text => text.startsWith('$')); const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); - const inputText = event.target.value; - const cursorPosition = textarea.selectionStart; - let searchTerm = ''; - let dollarIndex = inputText.lastIndexOf('$', cursorPosition); - if (dollarIndex === -1) return autocompleteOutput.innerHTML = ''; + textarea.addEventListener('input', function (event) { + const inputText = event.target.value; + const cursorPosition = textarea.selectionStart; + let searchTerm = ''; + let dollarIndex = inputText.lastIndexOf('$', cursorPosition); - searchTerm = inputText.substring(dollarIndex).toLowerCase(); - autocompleteOutput.innerHTML = ''; + if (dollarIndex === -1) { + autocompleteOutput.innerHTML = ''; + return; + } - const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - const displayedFunctions = matchingFunctions.slice(0, 5); + searchTerm = inputText.substring(dollarIndex).toLowerCase(); + autocompleteOutput.innerHTML = ''; - displayedFunctions.forEach(func => { - const span = document.createElement('span'); - span.textContent = func; - span.addEventListener('click', function () { - textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); - textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - autocompleteOutput.innerHTML = ''; - textarea.focus(); - }); + const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - autocompleteOutput.appendChild(span); + const displayedFunctions = matchingFunctions.slice(0, 5); + + displayedFunctions.forEach(func => { + const span = document.createElement('span'); + span.textContent = func; + span.addEventListener('click', function () { + textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); + textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; + autocompleteOutput.innerHTML = ''; + textarea.focus(); + }); + + autocompleteOutput.appendChild(span); + }); }); } From c7937f70b3c110c128618b4bf253dbf8ba579d6d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 13:48:14 +0300 Subject: [PATCH 0243/1179] Update playground.js --- src/theme/playground.js | 212 +++++++++++++++++++++------------------- 1 file changed, 110 insertions(+), 102 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 499411c4a77..f8fceeeffa4 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -414,105 +414,105 @@ function editorFindCase() { let highlightEnabled = true; -function toggleHighlight() { - const highlightedTextDiv = document.getElementById("highlightedText"); - const text = document.getElementById("editor").value; - const searchText = document.getElementById("searchText").value; - let highlighted = text; - let matches = 0; - - if (searchText) { - try { - const flags = caseSensitive ? 'g' : 'gi'; - const regex = new RegExp(searchText, flags); - - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } catch (e) { - const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const flags = caseSensitive ? 'g' : 'gi'; - const regex = new RegExp(escapedSearchText, flags); - - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } - } - - if (highlightEnabled) { - // Channel & User mentions - const mentionRegex = /<@(.*?)>/g; - highlighted = highlighted.replace(mentionRegex, (match, content) => { - return `@${content}`; - }); - - const channelRegex = /<#(.*?)>/g; - highlighted = highlighted.replace(channelRegex, (match, content) => { - return `#${content}`; - }); - - // ** - const boldRegex = /\*\*(.*?)\*\*/g; - highlighted = highlighted.replace(boldRegex, (match, content) => { - return `${content}`; - }); - - // * - const italicRegex = /\*(.*?)\*/g; - highlighted = highlighted.replace(italicRegex, (match, content) => { - return `${content}`; - }); - - // ~~ - const delRegex = /~~(.*?)~~/g; - highlighted = highlighted.replace(delRegex, (match, content) => { - return `${content}`; - }); - - // __ - const underRegex = /__(.*?)__/g; - highlighted = highlighted.replace(underRegex, (match, content) => { - return `${content}`; - }); - - // Unixtime - const timestampRegex = //g; - highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { - const date = new Date(parseInt(timestamp) * 1000); - let formattedDate = ""; - - switch (format) { - case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; - case 'd': formattedDate = date.toLocaleDateString(); break; - case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; - case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'R': formattedDate = getRelativeTime(date); break; - default: formattedDate = "Invalid format"; - } - return `${formattedDate}`; - }); - } - - // Link - const linkRegex = /(https?:\/\/[^\s]+)/g; - highlighted = highlighted.replace(linkRegex, (url) => { - return `${url}`; - }); - - // Lines - const lines = highlighted.split('\n'); - let numberedText = ""; - for (let i = 0; i < lines.length; i++) { - numberedText += `${i + 1} ${lines[i]}
    `; - } - - const resultsString = `

    Results: ${matches}

    `; - highlightedTextDiv.innerHTML = resultsString + numberedText; +function toggleHighlight() { + const highlightedTextDiv = document.getElementById("highlightedText"); + const text = document.getElementById("editor").value; + const searchText = document.getElementById("searchText").value; + let highlighted = text; + let matches = 0; + + if (searchText) { + try { + const flags = caseSensitive ? 'g' : 'gi'; + const regex = new RegExp(searchText, flags); + + highlighted = text.replace(regex, (match) => { + matches++; + return `${match}`; + }); + } catch (e) { + const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const flags = caseSensitive ? 'g' : 'gi'; + const regex = new RegExp(escapedSearchText, flags); + + highlighted = text.replace(regex, (match) => { + matches++; + return `${match}`; + }); + } + } + + if (highlightEnabled) { + // Channel & User mentions + const mentionRegex = /<@(.*?)>/g; + highlighted = highlighted.replace(mentionRegex, (match, content) => { + return `@${content}`; + }); + + const channelRegex = /<#(.*?)>/g; + highlighted = highlighted.replace(channelRegex, (match, content) => { + return `#${content}`; + }); + + // ** + const boldRegex = /\*\*(.*?)\*\*/g; + highlighted = highlighted.replace(boldRegex, (match, content) => { + return `${content}`; + }); + + // * + const italicRegex = /\*(.*?)\*/g; + highlighted = highlighted.replace(italicRegex, (match, content) => { + return `${content}`; + }); + + // ~~ + const delRegex = /~~(.*?)~~/g; + highlighted = highlighted.replace(delRegex, (match, content) => { + return `${content}`; + }); + + // __ + const underRegex = /__(.*?)__/g; + highlighted = highlighted.replace(underRegex, (match, content) => { + return `${content}`; + }); + + // Unixtime + const timestampRegex = //g; + highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { + const date = new Date(parseInt(timestamp) * 1000); + let formattedDate = ""; + + switch (format) { + case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; + case 'd': formattedDate = date.toLocaleDateString(); break; + case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; + case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'R': formattedDate = getRelativeTime(date); break; + default: formattedDate = "Invalid format"; + } + return `${formattedDate}`; + }); + } + + // Link + const linkRegex = /(https?:\/\/[^\s]+)/g; + highlighted = highlighted.replace(linkRegex, (url) => { + return `${url}`; + }); + + // Lines + const lines = highlighted.split('\n'); + let numberedText = ""; + for (let i = 0; i < lines.length; i++) { + numberedText += `${i + 1} ${lines[i]}
    `; + } + + const resultsString = `

    Results: ${matches}

    `; + highlightedTextDiv.innerHTML = resultsString + numberedText; } function textHighlighting() { @@ -770,8 +770,16 @@ function callButtonChange(buttonName, status) { } } +let autocompleteEnabled = true; +function changeAutocomplete() { + autocompleteEnabled = !autocompleteEnabled; + const autocompleteElement = document.getElementById('autocomplete'); - - - + if (autocompleteEnabled) { + autocompleteElement.style.visibility = 'visible'; + } else { + autocompleteElement.style.visibility = 'hidden'; + } + callButtonChange('findHighlightingButton', autocompleteEnabled); +} From 500f829c36983e56a27fd738e319ff4c1a3c40ac Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:18:35 +0300 Subject: [PATCH 0244/1179] Update playground.js --- src/theme/playground.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index f8fceeeffa4..055e8927b6a 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -777,9 +777,10 @@ function changeAutocomplete() { const autocompleteElement = document.getElementById('autocomplete'); if (autocompleteEnabled) { - autocompleteElement.style.visibility = 'visible'; + autocompleteElement.style.display = 'none'; } else { - autocompleteElement.style.visibility = 'hidden'; + autocompleteElement.style.display = 'flex'; } - callButtonChange('findHighlightingButton', autocompleteEnabled); + callButtonChange('changeAutocompleteButton', autocompleteEnabled); } + From f60262bfc087ec30ce8398bf52fd1ecd5a255470 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:18:59 +0300 Subject: [PATCH 0245/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index a445d822ad7..0c877338b0e 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -101,7 +101,7 @@ Here you can use the basic editor features to write codes more conveniently.

    Suggest functions as you type.

    - +

    Loading...

    From 2b7611131aed93ef588507fc7aa9818c804ab412 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:25:07 +0300 Subject: [PATCH 0246/1179] Update autocomplete.js --- src/theme/autocomplete.js | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 6a8affca27c..3fc2f9724f8 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -1,7 +1,7 @@ function autocomplete() { const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')) .find(li => { - const div = li.querySelector('div'); + const div = li.querySelector('div'); return div && div.textContent.trim() === 'Functions'; }); @@ -22,26 +22,24 @@ function autocomplete() { const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) .map(a => a.textContent) .filter(text => text.startsWith('$')); - const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); - textarea.addEventListener('input', function (event) { - const inputText = event.target.value; + function updateAutocomplete() { + const inputText = textarea.value; const cursorPosition = textarea.selectionStart; - let searchTerm = ''; - let dollarIndex = inputText.lastIndexOf('$', cursorPosition); + + let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); if (dollarIndex === -1) { autocompleteOutput.innerHTML = ''; return; } - searchTerm = inputText.substring(dollarIndex).toLowerCase(); + const searchTerm = inputText.substring(dollarIndex, cursorPosition).toLowerCase(); autocompleteOutput.innerHTML = ''; const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - const displayedFunctions = matchingFunctions.slice(0, 5); displayedFunctions.forEach(func => { @@ -53,10 +51,14 @@ function autocomplete() { autocompleteOutput.innerHTML = ''; textarea.focus(); }); - autocompleteOutput.appendChild(span); }); - }); + } + + textarea.addEventListener('input', updateAutocomplete); + + textarea.addEventListener('mouseup', updateAutocomplete); + textarea.addEventListener('keyup', updateAutocomplete); } document.addEventListener("DOMContentLoaded", function() { From 2cb4af8b0d65fe1f93af94d2f6a8db70d98b32c3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:30:08 +0300 Subject: [PATCH 0247/1179] Update playground.js --- src/theme/playground.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 055e8927b6a..cf4cf9c4fca 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -777,10 +777,11 @@ function changeAutocomplete() { const autocompleteElement = document.getElementById('autocomplete'); if (autocompleteEnabled) { - autocompleteElement.style.display = 'none'; - } else { autocompleteElement.style.display = 'flex'; + } else { + autocompleteElement.style.display = 'none'; } callButtonChange('changeAutocompleteButton', autocompleteEnabled); } + From 2486644c6560554336fa8b3d28d51d2349ba4297 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:45:30 +0300 Subject: [PATCH 0248/1179] Update autocomplete.js --- src/theme/autocomplete.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 3fc2f9724f8..2eb0b2ca2df 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -22,6 +22,7 @@ function autocomplete() { const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) .map(a => a.textContent) .filter(text => text.startsWith('$')); + const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); @@ -42,6 +43,17 @@ function autocomplete() { const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); const displayedFunctions = matchingFunctions.slice(0, 5); + const { left, top, height } = textarea.getBoundingClientRect(); + const x = left + textarea.selectionStart * 8; + const y = top + height - 25; + + autocompleteOutput.style.position = 'absolute'; + autocompleteOutput.style.left = `${x}px`; + autocompleteOutput.style.top = `${y}px`; + autocompleteOutput.style.zIndex = '1000'; + autocompleteOutput.style.backgroundColor = 'white'; + autocompleteOutput.style.border = '1px solid #ccc'; + displayedFunctions.forEach(func => { const span = document.createElement('span'); span.textContent = func; @@ -56,7 +68,6 @@ function autocomplete() { } textarea.addEventListener('input', updateAutocomplete); - textarea.addEventListener('mouseup', updateAutocomplete); textarea.addEventListener('keyup', updateAutocomplete); } From 75ab4afb0c1ca01c41658b2bff4598e0726e367c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:52:01 +0300 Subject: [PATCH 0249/1179] Update playground.js --- src/theme/playground.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index cf4cf9c4fca..76ab7647b38 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -777,7 +777,7 @@ function changeAutocomplete() { const autocompleteElement = document.getElementById('autocomplete'); if (autocompleteEnabled) { - autocompleteElement.style.display = 'flex'; + autocompleteElement.style.display = 'block'; } else { autocompleteElement.style.display = 'none'; } @@ -785,3 +785,4 @@ function changeAutocomplete() { } + From 3e499f92e5a594a70f9cb7a2657b7c3d89e90a80 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:57:07 +0300 Subject: [PATCH 0250/1179] Update chrome.css --- src/theme/css/chrome.css | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index cfa6e15cb13..7cf3a6f3f2e 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1451,29 +1451,28 @@ ul#searchresults span.teaser em { #autocomplete { white-space: normal; - width: 100%; + width: auto; margin-bottom: 3rem; - margin-top: -1.75rem; - display: flex; - justify-content: center; - flex-wrap: wrap; + margin-top: -1.75rem; + display: block !important; + border-radius: 10px; + background: var(--color3) !important; + border-color: hsl(0deg 0% 100% / 10%) !important; } #autocomplete span { - display: inline-block; - color: var(--color1); - background: hsl(0deg 0% 100% / 10%) !important; + display: block; + color: hsl(0deg 0% 100% / 65%); border-radius: 10px; - margin-bottom: .5rem; + margin-bottom: .5rem; cursor: pointer; padding: .5rem; - margin-right: .75rem; - transition: 0.2s; + width: fit-content; + transition: 0.2s; } #autocomplete span:hover { - transform: scale(1.025); - transition: 0.2s; + transform: scale(1.015); + color: hsl(0deg 0% 100% / 75%); + transition: 0.2s; } - - From d699abd2741fa56a375dd4f3b228b09222a38b6d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:59:12 +0300 Subject: [PATCH 0251/1179] Update autocomplete.js --- src/theme/autocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 2eb0b2ca2df..92686edef10 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -45,7 +45,7 @@ function autocomplete() { const { left, top, height } = textarea.getBoundingClientRect(); const x = left + textarea.selectionStart * 8; - const y = top + height - 25; + const y = top + height - 60; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; From 98a0fd4972466d57eec0e63d1e0775e35221cdf8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 15:17:30 +0300 Subject: [PATCH 0252/1179] Update autocomplete.js --- src/theme/autocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 92686edef10..aa1e3294044 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -45,7 +45,7 @@ function autocomplete() { const { left, top, height } = textarea.getBoundingClientRect(); const x = left + textarea.selectionStart * 8; - const y = top + height - 60; + const y = top + height - 30; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; From 187f8931ccafd5b5b7b3b36e2dcf1bb8ebfb592e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 16:39:33 +0300 Subject: [PATCH 0253/1179] Update autocomplete.js --- src/theme/autocomplete.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index aa1e3294044..1ee9e4130ad 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -43,13 +43,21 @@ function autocomplete() { const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); const displayedFunctions = matchingFunctions.slice(0, 5); + // Получаем координаты курсора относительно textarea (более точный расчет) const { left, top, height } = textarea.getBoundingClientRect(); - const x = left + textarea.selectionStart * 8; - const y = top + height - 30; + const cursorRect = textarea.getBoundingClientRect(); + const textareaStyle = window.getComputedStyle(textarea); + const lineHeight = parseInt(textareaStyle.lineHeight); + const paddingTop = parseInt(textareaStyle.paddingTop); + const borderTopWidth = parseInt(textareaStyle.borderTopWidth); + const x = left + textarea.selectionStart * 8; + const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight; //Исправлено: учет высоты строки + + // Устанавливаем позицию панели автозаполнения autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; - autocompleteOutput.style.top = `${y}px`; + autocompleteOutput.style.top = `${y + lineHeight}px`; // Отображаем ниже строки. autocompleteOutput.style.zIndex = '1000'; autocompleteOutput.style.backgroundColor = 'white'; autocompleteOutput.style.border = '1px solid #ccc'; From e4fd7aca46bdd93fd66d07fa63b3f214fe1250dc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 16:41:09 +0300 Subject: [PATCH 0254/1179] Update autocomplete.js --- src/theme/autocomplete.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 1ee9e4130ad..5a01a7b201c 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -43,7 +43,6 @@ function autocomplete() { const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); const displayedFunctions = matchingFunctions.slice(0, 5); - // Получаем координаты курсора относительно textarea (более точный расчет) const { left, top, height } = textarea.getBoundingClientRect(); const cursorRect = textarea.getBoundingClientRect(); const textareaStyle = window.getComputedStyle(textarea); @@ -54,13 +53,10 @@ function autocomplete() { const x = left + textarea.selectionStart * 8; const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight; //Исправлено: учет высоты строки - // Устанавливаем позицию панели автозаполнения autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; - autocompleteOutput.style.top = `${y + lineHeight}px`; // Отображаем ниже строки. + autocompleteOutput.style.top = `${y + lineHeight}px`; autocompleteOutput.style.zIndex = '1000'; - autocompleteOutput.style.backgroundColor = 'white'; - autocompleteOutput.style.border = '1px solid #ccc'; displayedFunctions.forEach(func => { const span = document.createElement('span'); From 806f819b50aea9a4c00ad570d90987f5ba5cb15b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:24:08 +0300 Subject: [PATCH 0255/1179] Update autocomplete.js --- src/theme/autocomplete.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 5a01a7b201c..eba4069d326 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -51,7 +51,7 @@ function autocomplete() { const borderTopWidth = parseInt(textareaStyle.borderTopWidth); const x = left + textarea.selectionStart * 8; - const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight; //Исправлено: учет высоты строки + const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 5; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; @@ -76,6 +76,7 @@ function autocomplete() { textarea.addEventListener('keyup', updateAutocomplete); } + document.addEventListener("DOMContentLoaded", function() { autocomplete(); }); From b35f0b85df070095c9a9ab65a02c6c9dbbff97fd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:37:49 +0300 Subject: [PATCH 0256/1179] Update autocomplete.js --- src/theme/autocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index eba4069d326..6e668e9626f 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -51,7 +51,7 @@ function autocomplete() { const borderTopWidth = parseInt(textareaStyle.borderTopWidth); const x = left + textarea.selectionStart * 8; - const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 5; + const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight - 15; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; From 3cb1b941370f149ec281436dca0c95c9145a86f1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:43:19 +0300 Subject: [PATCH 0257/1179] Update autocomplete.js --- src/theme/autocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 6e668e9626f..081c499d999 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -51,7 +51,7 @@ function autocomplete() { const borderTopWidth = parseInt(textareaStyle.borderTopWidth); const x = left + textarea.selectionStart * 8; - const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight - 15; + const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight - 45; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; From 4ae089b9fa584c2439e2a4fbf7d12820971f0690 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:51:19 +0300 Subject: [PATCH 0258/1179] Update autocomplete.js --- src/theme/autocomplete.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 081c499d999..38c7f67e3bc 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -18,7 +18,6 @@ function autocomplete() { } const html = sectionList.innerHTML; - const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) .map(a => a.textContent) .filter(text => text.startsWith('$')); @@ -43,19 +42,19 @@ function autocomplete() { const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); const displayedFunctions = matchingFunctions.slice(0, 5); - const { left, top, height } = textarea.getBoundingClientRect(); - const cursorRect = textarea.getBoundingClientRect(); + const { left, top } = textarea.getBoundingClientRect(); const textareaStyle = window.getComputedStyle(textarea); - const lineHeight = parseInt(textareaStyle.lineHeight); - const paddingTop = parseInt(textareaStyle.paddingTop); - const borderTopWidth = parseInt(textareaStyle.borderTopWidth); + let lineHeight = parseInt(textareaStyle.lineHeight); + lineHeight = isNaN(lineHeight) ? 16 : lineHeight; + const paddingTop = parseInt(textareaStyle.paddingTop) || 0; + const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; const x = left + textarea.selectionStart * 8; - const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight - 45; + let y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight - 20; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; - autocompleteOutput.style.top = `${y + lineHeight}px`; + autocompleteOutput.style.top = `${y}px`; autocompleteOutput.style.zIndex = '1000'; displayedFunctions.forEach(func => { From 4245e221c8081d5b4d51f7aa8ae23a6bdbc9e895 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:54:30 +0300 Subject: [PATCH 0259/1179] Update autocomplete.js --- src/theme/autocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 38c7f67e3bc..aa7b24ab769 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -50,7 +50,7 @@ function autocomplete() { const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; const x = left + textarea.selectionStart * 8; - let y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight - 20; + let y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 20; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; From f04879b0960a2c325e498f52a242c6bc2f2f74c6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:55:52 +0300 Subject: [PATCH 0260/1179] Update autocomplete.js --- src/theme/autocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index aa7b24ab769..9430f908641 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -50,7 +50,7 @@ function autocomplete() { const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; const x = left + textarea.selectionStart * 8; - let y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 20; + let y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 35; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; From ec9f7d12ada9d0f2c538e5c47d9b6c7166215294 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:07:20 +0300 Subject: [PATCH 0261/1179] Update autocomplete.js --- src/theme/autocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 9430f908641..d29cc5a9b54 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -50,7 +50,7 @@ function autocomplete() { const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; const x = left + textarea.selectionStart * 8; - let y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 35; + let y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 30; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; From 76860b55010fcba643e3f57e914e917729d0dda3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:07:50 +0300 Subject: [PATCH 0262/1179] Update chrome.css --- src/theme/css/chrome.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 7cf3a6f3f2e..b26a6e3766b 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1451,7 +1451,7 @@ ul#searchresults span.teaser em { #autocomplete { white-space: normal; - width: auto; + width: 20%; margin-bottom: 3rem; margin-top: -1.75rem; display: block !important; @@ -1467,7 +1467,7 @@ ul#searchresults span.teaser em { margin-bottom: .5rem; cursor: pointer; padding: .5rem; - width: fit-content; + width: 100%; transition: 0.2s; } From 87cecc77d767459c0b2bab041b544f38dc37ec1a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:12:38 +0300 Subject: [PATCH 0263/1179] Update chrome.css --- src/theme/css/chrome.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index b26a6e3766b..01d8838b65a 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1451,7 +1451,7 @@ ul#searchresults span.teaser em { #autocomplete { white-space: normal; - width: 20%; + width: auto; margin-bottom: 3rem; margin-top: -1.75rem; display: block !important; @@ -1476,3 +1476,4 @@ ul#searchresults span.teaser em { color: hsl(0deg 0% 100% / 75%); transition: 0.2s; } + From 504270136d38bf5481b48af1d8b945436b8eb7dc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 30 Aug 2025 12:19:03 +0300 Subject: [PATCH 0264/1179] Update editor.md --- src/tools/editor.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index 0c877338b0e..caa44d03ab2 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -113,4 +113,5 @@ Here you can use the basic editor features to write codes more conveniently.

    **

    *

    `

    +

    ~~

    From 2cebf4e6b7cee4be12db635457af95ff52671144 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 30 Aug 2025 12:25:42 +0300 Subject: [PATCH 0265/1179] Update playground.js --- src/theme/playground.js | 203 ++++++++++++++++++++-------------------- 1 file changed, 104 insertions(+), 99 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 76ab7647b38..1c3b7463d2b 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -414,105 +414,110 @@ function editorFindCase() { let highlightEnabled = true; -function toggleHighlight() { - const highlightedTextDiv = document.getElementById("highlightedText"); - const text = document.getElementById("editor").value; - const searchText = document.getElementById("searchText").value; - let highlighted = text; - let matches = 0; - - if (searchText) { - try { - const flags = caseSensitive ? 'g' : 'gi'; - const regex = new RegExp(searchText, flags); - - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } catch (e) { - const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const flags = caseSensitive ? 'g' : 'gi'; - const regex = new RegExp(escapedSearchText, flags); - - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } - } - - if (highlightEnabled) { - // Channel & User mentions - const mentionRegex = /<@(.*?)>/g; - highlighted = highlighted.replace(mentionRegex, (match, content) => { - return `@${content}`; - }); - - const channelRegex = /<#(.*?)>/g; - highlighted = highlighted.replace(channelRegex, (match, content) => { - return `#${content}`; - }); - - // ** - const boldRegex = /\*\*(.*?)\*\*/g; - highlighted = highlighted.replace(boldRegex, (match, content) => { - return `${content}`; - }); - - // * - const italicRegex = /\*(.*?)\*/g; - highlighted = highlighted.replace(italicRegex, (match, content) => { - return `${content}`; - }); - - // ~~ - const delRegex = /~~(.*?)~~/g; - highlighted = highlighted.replace(delRegex, (match, content) => { - return `${content}`; - }); - - // __ - const underRegex = /__(.*?)__/g; - highlighted = highlighted.replace(underRegex, (match, content) => { - return `${content}`; - }); - - // Unixtime - const timestampRegex = //g; - highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { - const date = new Date(parseInt(timestamp) * 1000); - let formattedDate = ""; - - switch (format) { - case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; - case 'd': formattedDate = date.toLocaleDateString(); break; - case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; - case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'R': formattedDate = getRelativeTime(date); break; - default: formattedDate = "Invalid format"; - } - return `${formattedDate}`; - }); - } - - // Link - const linkRegex = /(https?:\/\/[^\s]+)/g; - highlighted = highlighted.replace(linkRegex, (url) => { - return `${url}`; - }); - - // Lines - const lines = highlighted.split('\n'); - let numberedText = ""; - for (let i = 0; i < lines.length; i++) { - numberedText += `${i + 1} ${lines[i]}
    `; - } - - const resultsString = `

    Results: ${matches}

    `; - highlightedTextDiv.innerHTML = resultsString + numberedText; +function toggleHighlight() { + const highlightedTextDiv = document.getElementById("highlightedText"); + const text = document.getElementById("editor").value; + const searchText = document.getElementById("searchText").value; + let highlighted = text; + let matches = 0; + + if (searchText) { + try { + const flags = caseSensitive ? 'g' : 'gi'; + const regex = new RegExp(searchText, flags); + + highlighted = text.replace(regex, (match) => { + matches++; + return `${match}`; + }); + } catch (e) { + const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const flags = caseSensitive ? 'g' : 'gi'; + const regex = new RegExp(escapedSearchText, flags); + + highlighted = text.replace(regex, (match) => { + matches++; + return `${match}`; + }); + } + } + + if (highlightEnabled) { + // Channel & User mentions + const mentionRegex = /<@(.*?)>/g; + highlighted = highlighted.replace(mentionRegex, (match, content) => { + return `@${content}`; + }); + + const channelRegex = /<#(.*?)>/g; + highlighted = highlighted.replace(channelRegex, (match, content) => { + return `#${content}`; + }); + + // ** + const boldRegex = /\*\*(.*?)\*\*/g; + highlighted = highlighted.replace(boldRegex, (match, content) => { + return `${content}`; + }); + + // * + const italicRegex = /\*(.*?)\*/g; + highlighted = highlighted.replace(italicRegex, (match, content) => { + return `${content}`; + }); + + // ~~ + const delRegex = /~~(.*?)~~/g; + highlighted = highlighted.replace(delRegex, (match, content) => { + return `${content}`; + }); + + // __ + const underRegex = /__(.*?)__/g; + highlighted = highlighted.replace(underRegex, (match, content) => { + return `${content}`; + }); + + // Unixtime + const timestampRegex = //g; + highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { + const date = new Date(parseInt(timestamp) * 1000); + let formattedDate = ""; + + switch (format) { + case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; + case 'd': formattedDate = date.toLocaleDateString(); break; + case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; + case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; + case 'R': formattedDate = getRelativeTime(date); break; + default: formattedDate = "Invalid format"; + } + return `${formattedDate}`; + }); + + // Headers + highlighted = highlighted.replace(/^# (.*)$/gm, '

    $1

    '); + highlighted = highlighted.replace(/^## (.*)$/gm, '

    $1

    '); + highlighted = highlighted.replace(/^### (.*)$/gm, '

    $1

    '); + } + + // Link + const linkRegex = /(https?:\/\/[^\s]+)/g; + highlighted = highlighted.replace(linkRegex, (url) => { + return `${url}`; + }); + + // Lines + const lines = highlighted.split('\n'); + let numberedText = ""; + for (let i = 0; i < lines.length; i++) { + numberedText += `${i + 1} ${lines[i]}
    `; + } + + const resultsString = `

    Results: ${matches}

    `; + highlightedTextDiv.innerHTML = resultsString + numberedText; } function textHighlighting() { From 2eeddea5809120d2809aa54f052103cc6dbdd16a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 30 Aug 2025 21:56:42 +0300 Subject: [PATCH 0266/1179] Update editor.md --- src/tools/editor.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index caa44d03ab2..d1bff9a1ecb 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -50,7 +50,8 @@ Here you can use the basic editor features to write codes more conveniently.

    Special Characters: 0

    -
    +
    + Editor
    @@ -58,7 +59,7 @@ Here you can use the basic editor features to write codes more conveniently.

    Regex is supported

    -
    +
    From a9b24a687c3805525138ebf9871050e82e6be83d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 31 Aug 2025 10:21:21 +0300 Subject: [PATCH 0267/1179] Update chrome.css --- src/theme/css/chrome.css | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 01d8838b65a..bbd5f4b2e4c 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1174,6 +1174,18 @@ ul#searchresults span.teaser em { margin-bottom: .5rem; } +#highlightedText h1 { + display: inline; +} + +#highlightedText h2 { + display: inline; +} + +#highlightedText h3 { + display: inline; +} + .line-number { border-right-width: 2px; color: hsl(0deg 0% 100% / 30%) !important; @@ -1477,3 +1489,4 @@ ul#searchresults span.teaser em { transition: 0.2s; } + From 388b5e8e39f15517f456e58598ebbdaf487172ec Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 31 Aug 2025 10:30:35 +0300 Subject: [PATCH 0268/1179] Update chrome.css --- src/theme/css/chrome.css | 41 +++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index bbd5f4b2e4c..1fdd81f3a34 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1012,37 +1012,43 @@ ul#searchresults span.teaser em { /* Tools Editor */ #stats-container p, #another-info p { - transition: .4s; - display: inline-block; - margin-right: 7.5px; - background-color: var(--color3); - padding: 5px; - font-size: 1.5rem; - border-radius: 10px; - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); + transition: .4s; + display: inline-block; + margin-right: 7.5px; + background-color: var(--color3); + padding: 5px; + font-size: 1.5rem; + border-radius: 10px; + margin-top: -.5rem; + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); } #stats-container span { - font-weight: bold; + font-weight: bold; } #stats-container p:hover, #another-info p:hover { - transform: scale(1.1); - border-radius: 8px; - border-width: 1px; - transition: .4s; + transform: scale(1.1); + border-radius: 8px; + border-width: 1px; + transition: .4s; } #stats-container, #another-info { - margin-top: -2.5%; - display: flex; - flex-direction: row; + margin-top: 2rem; + display: flex; + flex-direction: row; justify-content: center; align-items: center; + flex-wrap: wrap; +} + +#stats-container { + margin-bottom: 1rem; } #another-info { - margin-top: -1rem; + margin-top: 1.25rem; margin-bottom: -1rem; } @@ -1490,3 +1496,4 @@ ul#searchresults span.teaser em { } + From e51ef1585f02313ce912befa5b684233c0cadde9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 31 Aug 2025 10:35:49 +0300 Subject: [PATCH 0269/1179] Update chrome.css --- src/theme/css/chrome.css | 50 +++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 1fdd81f3a34..2ce9a0cd26c 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1341,30 +1341,37 @@ ul#searchresults span.teaser em { } #selectors { - outline: none; - user-select: none; - -webkit-user-select: none; - display: flex; - justify-content: center; - align-items: center; - gap: 10px; - margin-bottom: 1.5rem; - margin-top: -1.5rem; + outline: none; + user-select: none; + -webkit-user-select: none; + display: flex; + justify-content: center; + align-items: center; + gap: 10px; + margin-bottom: 1.5rem; + margin-top: -1rem; + flex-wrap: wrap; } #selectors select { - cursor: pointer; - outline: none; - text-decoration: none; - touch-action: manipulation; - -webkit-tap-highlight-color: transparent; - width: auto; - padding: 8px 5px; - background: rgb(255 255 255 / 10%); - color: rgb(255 255 255 / 80%); - border-radius: 10px; - box-sizing: border-box; - border: 0; + cursor: pointer; + outline: none; + text-decoration: none; + touch-action: manipulation; + -webkit-tap-highlight-color: transparent; + width: 15rem; + padding: 8px 5px; + background: rgb(255 255 255 / 10%); + color: rgb(255 255 255 / 80%); + border-radius: 10px; + box-sizing: border-box; + border: 0; +} + +@media (max-width: 350px) { + #selectors select { + width: 85%; + } } #selectors select option { @@ -1497,3 +1504,4 @@ ul#searchresults span.teaser em { + From 441acc301172be0ba2ecf664ca7cd0c298626deb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 31 Aug 2025 10:37:28 +0300 Subject: [PATCH 0270/1179] Update chrome.css --- src/theme/css/chrome.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 2ce9a0cd26c..c2b9447ebbb 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1387,7 +1387,7 @@ ul#searchresults span.teaser em { padding: 1rem; } -#settings summary { +#settings summary, #text-editorui summary { user-select: none; -webkit-user-select: none; outline: none; @@ -1505,3 +1505,4 @@ ul#searchresults span.teaser em { + From 53db32326b32e869c1c24dd31024eb7cbae14494 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 31 Aug 2025 10:38:13 +0300 Subject: [PATCH 0271/1179] Update editor.md --- src/tools/editor.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index d1bff9a1ecb..1b8830e1b66 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -27,6 +27,7 @@ Here you can use the basic editor features to write codes more conveniently. + 0/50 From a77c20ef014a85fe122bc6ba1f1857410e0cf9ee Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:49:22 +0300 Subject: [PATCH 0275/1179] Update autocomplete.js --- src/theme/autocomplete.js | 56 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index d29cc5a9b54..1e6ad3f1419 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -75,9 +75,65 @@ function autocomplete() { textarea.addEventListener('keyup', updateAutocomplete); } +function addTooltips() { + const textarea = document.getElementById('editor'); + const tooltip = document.createElement('div'); + tooltip.id = 'tooltip'; + tooltip.style.position = 'absolute'; + tooltip.style.display = 'none'; + tooltip.style.zIndex = '1001'; + document.body.appendChild(tooltip); + + textarea.addEventListener('keyup', updateTooltip); + textarea.addEventListener('mouseup', updateTooltip); + + function updateTooltip() { + const text = textarea.value; + const cursor = textarea.selectionStart; + const commandTrigger = '$commandTrigger'; + const isSlashTrigger = '$isSlash'; + const timestampTrigger = '$getTimestamp'; + + let tooltipText = ''; + + // $commandTrigger + if (text.substring(cursor - commandTrigger.length, cursor) === commandTrigger) { + const name = document.getElementById('name').value || 'trigger'; + tooltipText = `Returns '${name}'`; + } + // $isSlash + else if (text.substring(cursor - isSlashTrigger.length, cursor) === isSlashTrigger) { + const slash = document.getElementById('scriptType').textContent.includes('Slash Command') ? 'true' : 'false'; + tooltipText = `Returns '${slash}'`; + } + // $getTimestamp + else if (text.substring(cursor - timestampTrigger.length, cursor).startsWith(timestampTrigger)) { + const timestamp = Math.floor(Date.now() / 1000); + tooltipText = `Returns '${timestamp}'`; + } + if (tooltipText) { + const { left, top } = textarea.getBoundingClientRect(); + const textareaStyle = window.getComputedStyle(textarea); + let lineHeight = parseInt(textareaStyle.lineHeight); + lineHeight = isNaN(lineHeight) ? 16 : lineHeight; + const paddingTop = parseInt(textareaStyle.paddingTop) || 0; + const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; + + const x = left + cursor * 8; + const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 30; + tooltip.style.left = `${x}px`; + tooltip.style.top = `${y}px`; + tooltip.textContent = tooltipText; + tooltip.style.display = 'block'; + } else { + tooltip.style.display = 'none'; + } + } +} document.addEventListener("DOMContentLoaded", function() { autocomplete(); + addTooltips(); }); window.addEventListener('beforeunload', function (event) { From 797cf0cd1d27b55de5d3ec1a3c121935f673377a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 1 Sep 2025 19:02:52 +0300 Subject: [PATCH 0276/1179] Update autocomplete.js --- src/theme/autocomplete.js | 111 ++++++++++++++++++++++++-------------- 1 file changed, 71 insertions(+), 40 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 1e6ad3f1419..9f857bc0f92 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -1,78 +1,109 @@ function autocomplete() { - const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')) - .find(li => { - const div = li.querySelector('div'); - return div && div.textContent.trim() === 'Functions'; - }); - - if (!functionsHeader) { - console.warn('Element not found.'); - return; - } - + const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')).find(li => li.querySelector('div')?.textContent.trim() === 'Functions'); + if (!functionsHeader) return; const sectionList = functionsHeader.nextElementSibling; - - if (!sectionList) { - console.warn('Functions arent found.'); - return; - } - + if (!sectionList) return; const html = sectionList.innerHTML; - const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')) - .map(a => a.textContent) - .filter(text => text.startsWith('$')); - + const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')).map(a => a.textContent).filter(text => text.startsWith('$')); const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); + let cursorInactiveTimeout; + let selectedIndex = -1; + + function hideAutocomplete() { + autocompleteOutput.innerHTML = ''; + clearTimeout(cursorInactiveTimeout); + selectedIndex = -1; + } function updateAutocomplete() { const inputText = textarea.value; const cursorPosition = textarea.selectionStart; - let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); - - if (dollarIndex === -1) { - autocompleteOutput.innerHTML = ''; - return; - } - + if (dollarIndex === -1) { hideAutocomplete(); return; } const searchTerm = inputText.substring(dollarIndex, cursorPosition).toLowerCase(); autocompleteOutput.innerHTML = ''; - const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); const displayedFunctions = matchingFunctions.slice(0, 5); + selectedIndex = -1; + Array.from(autocompleteOutput.children).forEach(child => child.classList.remove('selected')); const { left, top } = textarea.getBoundingClientRect(); const textareaStyle = window.getComputedStyle(textarea); - let lineHeight = parseInt(textareaStyle.lineHeight); - lineHeight = isNaN(lineHeight) ? 16 : lineHeight; + let lineHeight = parseInt(textareaStyle.lineHeight) || 16; const paddingTop = parseInt(textareaStyle.paddingTop) || 0; const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; - const x = left + textarea.selectionStart * 8; - let y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 30; + let y = top + paddingTop + borderTopWidth + (Math.floor(inputText.substring(0, cursorPosition).split('\n').length)) * lineHeight + 30; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; autocompleteOutput.style.top = `${y}px`; autocompleteOutput.style.zIndex = '1000'; - displayedFunctions.forEach(func => { + displayedFunctions.forEach((func, index) => { const span = document.createElement('span'); span.textContent = func; - span.addEventListener('click', function () { + span.addEventListener('click', () => selectFunction(func,dollarIndex,cursorPosition,inputText)); + autocompleteOutput.appendChild(span); + }); + + clearTimeout(cursorInactiveTimeout); + cursorInactiveTimeout = setTimeout(hideAutocomplete, 10000); + } + function selectFunction(func,dollarIndex,cursorPosition,inputText) { textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - autocompleteOutput.innerHTML = ''; + hideAutocomplete(); textarea.focus(); - }); - autocompleteOutput.appendChild(span); - }); } + function handleArrowKeys(event) { + if (autocompleteOutput.children.length === 0) return; + + if (event.key === 'ArrowDown') { + event.preventDefault(); + selectedIndex = Math.min(selectedIndex + 1, autocompleteOutput.children.length - 1); + + } else if (event.key === 'ArrowUp') { + event.preventDefault(); + selectedIndex = Math.max(selectedIndex - 1, 0); + } else if (event.key === 'Enter' && selectedIndex !== -1) { + event.preventDefault(); + const selectedFunction = autocompleteOutput.children[selectedIndex].textContent; + const inputText = textarea.value; + const cursorPosition = textarea.selectionStart; + let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); + selectFunction(selectedFunction,dollarIndex,cursorPosition,inputText); + return; + } + + highlightSelected(); + } + function highlightSelected() { + Array.from(autocompleteOutput.children).forEach((child, index) => { + child.classList.toggle('selected', index === selectedIndex); + }); + } + textarea.addEventListener('input', updateAutocomplete); textarea.addEventListener('mouseup', updateAutocomplete); - textarea.addEventListener('keyup', updateAutocomplete); + textarea.addEventListener('keydown', event => { + if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Enter') { + handleArrowKeys(event); + } + }); + + + textarea.addEventListener('blur', () => { + setTimeout(hideAutocomplete, 200); + }); + + document.addEventListener('click', event => { + if (!autocompleteOutput.contains(event.target) && event.target !== textarea) { + hideAutocomplete(); + } + }); } function addTooltips() { From 289356e2b6d7ee4a48d9f65fc39f1c55873428e7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 1 Sep 2025 19:19:50 +0300 Subject: [PATCH 0277/1179] Update chrome.css --- src/theme/css/chrome.css | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index c2b9447ebbb..3724e24ba2b 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1496,13 +1496,12 @@ ul#searchresults span.teaser em { transition: 0.2s; } -#autocomplete span:hover { - transform: scale(1.015); - color: hsl(0deg 0% 100% / 75%); - transition: 0.2s; +#autocomplete span.selected, #autocomplete span:hover { + margin-left: .5rem; + border-left-color: var(--color1); + border-left-width: 2.5px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-left-style: solid; + transition: 0.2s; } - - - - - From 6bc8e86960b087eb7f59caafa69fb2593a93d666 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 5 Sep 2025 16:38:09 +0300 Subject: [PATCH 0278/1179] Update editor.md --- src/tools/editor.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index f803b2933bb..236688291eb 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -110,10 +110,14 @@ Here you can use the basic editor features to write codes more conveniently.
-
-

Tips

-

**

-

*

-

`

-

~~

-
+
+ Tips + *Italics* + **Bold** + ~~Line Through~~ +

### Small Header

+

## Header

+

# Big Header

+ [Hyperlink Text](Link) + [BDScript 2 Hyperlink Text\](Link) +
From 2924e8b03db0d8a4c9646fd83c3425ac9cb54a9c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 5 Sep 2025 16:51:46 +0300 Subject: [PATCH 0279/1179] Update editor.md --- src/tools/editor.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 236688291eb..507accf3623 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -57,8 +57,9 @@ Here you can use the basic editor features to write codes more conveniently.

-
+ +

Regex is supported

From eb25e9e42337eacb67a40546a94a6d7049337428 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 5 Sep 2025 16:55:26 +0300 Subject: [PATCH 0280/1179] Update playground.js --- src/theme/playground.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 223e2a4dcf3..f3450d381d3 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -237,6 +237,24 @@ function replaceText() { checkBrackets(); } +function replaceOneText() { + const searchText = document.getElementById("searchText").value; + const replaceText = document.getElementById("replaceText").value; + const editor = document.getElementById("editor"); + + try { + const regex = new RegExp(searchText); + editor.value = editor.value.replace(regex, replaceText); + } catch (e) { + const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + editor.value = editor.value.replace(escapedSearchText, replaceText); + } + + updateStats(); + checkBrackets(); +} + + let showWarnings = true; let showErrors = true; @@ -799,3 +817,4 @@ function changeAutocomplete() { + From 53098614ef76a5d1db6c6563f52547b9021444ee Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 5 Sep 2025 16:56:06 +0300 Subject: [PATCH 0281/1179] Update editor.md --- src/tools/editor.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 507accf3623..f3df26883b7 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -58,8 +58,8 @@ Here you can use the basic editor features to write codes more conveniently.

- - + +

Regex is supported

From a6503d6955ac64750da39e854cc50f569990023e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 5 Sep 2025 17:30:25 +0300 Subject: [PATCH 0282/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index f3df26883b7..d9a4d883276 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -58,7 +58,7 @@ Here you can use the basic editor features to write codes more conveniently.

- +

Regex is supported

From 560007054672c1c068048f09ad3d1945730d0b96 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 12:05:57 +0300 Subject: [PATCH 0283/1179] Update chrome.css --- src/theme/css/chrome.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 3724e24ba2b..1483a5a63e3 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1380,14 +1380,14 @@ ul#searchresults span.teaser em { background-color: var(--color3); } -#settings { +#settings, #tips { margin-top: 1rem; background-color: var(--color3); border-radius: 10px; padding: 1rem; } -#settings summary, #text-editorui summary { +#settings summary, #text-editorui summary, #tips summary { user-select: none; -webkit-user-select: none; outline: none; @@ -1505,3 +1505,4 @@ ul#searchresults span.teaser em { border-left-style: solid; transition: 0.2s; } + From 44a96b65c0c547824587aab3c9843ee09797d29a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 12:14:35 +0300 Subject: [PATCH 0284/1179] Update editor.md --- src/tools/editor.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index d9a4d883276..853bc28ffd2 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -116,9 +116,9 @@ Here you can use the basic editor features to write codes more conveniently. *Italics* **Bold** ~~Line Through~~ + [Hyperlink Text](Link) + [BDScript 2 Hyperlink Text\](Link)

### Small Header

## Header

# Big Header

- [Hyperlink Text](Link) - [BDScript 2 Hyperlink Text\](Link) From 7b018c1f37e87393e58a64cdb3b214954326e88e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 12:15:24 +0300 Subject: [PATCH 0285/1179] Update chrome.css --- src/theme/css/chrome.css | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 1483a5a63e3..980ed03d545 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1387,6 +1387,26 @@ ul#searchresults span.teaser em { padding: 1rem; } +#tips em, #tips strong, #tips a { + display: block; +} + +#tips h1 { + margin-top: -2.25rem; +} + +#tips h2 { + margin-top: -1.9rem; +} + +#tips h3 { + margin-top: .1rem; +} + +#tips h3:hover { + border: 0; +} + #settings summary, #text-editorui summary, #tips summary { user-select: none; -webkit-user-select: none; @@ -1506,3 +1526,4 @@ ul#searchresults span.teaser em { transition: 0.2s; } + From 1a61fb6256d105760c285d142d9bbdc735be0825 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 12:23:48 +0300 Subject: [PATCH 0286/1179] Update playground.js --- src/theme/playground.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index f3450d381d3..b2b5d4598ac 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -496,6 +496,24 @@ function toggleHighlight() { return `${content}`; }); + // ` + const hgsCodeRegex = /`(.*?)`/g; + highlighted = highlighted.replace(hgsCodeRegex, (match, content) => { + return `${content}`; + }); + + // ``` + const hgbCodeRegex = /```(.*?)```/g; + highlighted = highlighted.replace(hgbCodeRegex, (match, content) => { + return `${content}`; + }); + + // || + const spoilerRegex = /\|\|(.*?)\|\|/g; + highlighted = highlighted.replace(spoilerRegex, (match, content) => { + return `${content}`; + }); + // Unixtime const timestampRegex = //g; highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { @@ -521,6 +539,12 @@ function toggleHighlight() { highlighted = highlighted.replace(/^### (.*)$/gm, '

$1

'); } + // > + const quoteRegex = /^> (.*)$/gm; + highlighted = highlighted.replace(quoteRegex, (match, content) => { + return `${content}`; + }); + // Link const linkRegex = /(https?:\/\/[^\s]+)/g; highlighted = highlighted.replace(linkRegex, (url) => { @@ -818,3 +842,4 @@ function changeAutocomplete() { + From 1290d18bd306c5ec8dfc9fe1d2b2b1e3d3723b32 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 12:44:55 +0300 Subject: [PATCH 0287/1179] Update chrome.css --- src/theme/css/chrome.css | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 980ed03d545..2c8de717bb6 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1192,6 +1192,36 @@ ul#searchresults span.teaser em { display: inline; } +#highlightedText spoiler { + user-select: none; + -webkit-user-select: none; + background: #111111; + color: #111111; + padding-left: .25rem; + padding-right: .25rem; + cursor: pointer !important; +} + +#highlightedText quote::before { + content: ""; + margin-right: 5px; + border-radius: 10px; + border-style: solid; + border-width: 2px; + border-color: #535353; +} + +#highlightedText hgSCode { + background: #2a2a2a; + color: #919191; + padding-left: .3rem; + padding-right: .3rem; + border-style: solid; + border-width: 1px; + border-color: #4b4b4b; + border-radius: 5px; +} + .line-number { border-right-width: 2px; color: hsl(0deg 0% 100% / 30%) !important; @@ -1527,3 +1557,4 @@ ul#searchresults span.teaser em { } + From 7e86a0d7375c68fe5f752db424966071aedbe1f3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 12:47:05 +0300 Subject: [PATCH 0288/1179] Update playground.js --- src/theme/playground.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index b2b5d4598ac..1988e2e61b0 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -496,18 +496,18 @@ function toggleHighlight() { return `${content}`; }); - // ` - const hgsCodeRegex = /`(.*?)`/g; - highlighted = highlighted.replace(hgsCodeRegex, (match, content) => { - return `${content}`; - }); - // ``` const hgbCodeRegex = /```(.*?)```/g; highlighted = highlighted.replace(hgbCodeRegex, (match, content) => { return `${content}`; }); + // ` + const hgsCodeRegex = /`(.*?)`/g; + highlighted = highlighted.replace(hgsCodeRegex, (match, content) => { + return `${content}`; + }); + // || const spoilerRegex = /\|\|(.*?)\|\|/g; highlighted = highlighted.replace(spoilerRegex, (match, content) => { @@ -843,3 +843,4 @@ function changeAutocomplete() { + From 2ce101d36057290034e9314846008f6f436069c1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 12:52:47 +0300 Subject: [PATCH 0289/1179] Update playground.js --- src/theme/playground.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 1988e2e61b0..66615327937 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -511,9 +511,17 @@ function toggleHighlight() { // || const spoilerRegex = /\|\|(.*?)\|\|/g; highlighted = highlighted.replace(spoilerRegex, (match, content) => { - return `${content}`; + const spoiler = document.createElement('spoiler'); + spoiler.textContent = content; + + spoiler.addEventListener('click', () => { + spoiler.classList.toggle('active-spoiler'); + }); + + return spoiler.outerHTML; }); + // Unixtime const timestampRegex = //g; highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { @@ -844,3 +852,4 @@ function changeAutocomplete() { + From 98b4a9b8c4450b26d596de1e8e42d51bb3c6520d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 12:55:59 +0300 Subject: [PATCH 0290/1179] Update chrome.css --- src/theme/css/chrome.css | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 2c8de717bb6..00f159f15ba 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1202,6 +1202,14 @@ ul#searchresults span.teaser em { cursor: pointer !important; } +#highlightedText spoiler.spoiler-active { + background: #2e2e2e94; + color: #ababab; + cursor: text !important; + user-select: auto; + -webkit-user-select: auto; +} + #highlightedText quote::before { content: ""; margin-right: 5px; @@ -1558,3 +1566,4 @@ ul#searchresults span.teaser em { + From b3d42341c36a3bce8a30260ee079739e119784ba Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 18:21:19 +0300 Subject: [PATCH 0291/1179] Update playground.js --- src/theme/playground.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 66615327937..77ea64b0b64 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -511,16 +511,21 @@ function toggleHighlight() { // || const spoilerRegex = /\|\|(.*?)\|\|/g; highlighted = highlighted.replace(spoilerRegex, (match, content) => { - const spoiler = document.createElement('spoiler'); - spoiler.textContent = content; + return `${content}`; + }); - spoiler.addEventListener('click', () => { - spoiler.classList.toggle('active-spoiler'); - }); + const highlightedText = document.getElementById('highlightedText'); - return spoiler.outerHTML; - }); + if (highlightedText) { + highlightedText.innerHTML = highlighted; + highlightedText.addEventListener('click', (event) => { + if (event.target.tagName === 'SPOILER') { + event.target.classList.toggle('spoiler-inactive'); + event.target.classList.toggle('spoiler-active'); + } + }); + } // Unixtime const timestampRegex = //g; @@ -853,3 +858,4 @@ function changeAutocomplete() { + From 52c81e70df6e68aa9aaf4771cfc0cc34889c3001 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 18:29:52 +0300 Subject: [PATCH 0292/1179] Update playground.js --- src/theme/playground.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 77ea64b0b64..b415f889879 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -521,8 +521,7 @@ function toggleHighlight() { highlightedText.addEventListener('click', (event) => { if (event.target.tagName === 'SPOILER') { - event.target.classList.toggle('spoiler-inactive'); - event.target.classList.toggle('spoiler-active'); + event.target.classList.add('spoiler-active'); } }); } @@ -859,3 +858,4 @@ function changeAutocomplete() { + From 75fc4752bf90d074649e3c088efd2abcfc65f18d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Sep 2025 19:00:50 +0300 Subject: [PATCH 0293/1179] Update editor.md --- src/tools/editor.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index 853bc28ffd2..b00fbb6f591 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -106,6 +106,11 @@ Here you can use the basic editor features to write codes more conveniently.

Suggest functions as you type.

+
+
+

Number each line.

+ +

Loading...

From da0e1bd1b015115794728ac50a188f3a6cbbfb83 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 11 Sep 2025 14:58:02 +0300 Subject: [PATCH 0294/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 9c0765a43b0..cec23ad4ac6 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -7,7 +7,13 @@ # 2025 + +## September +- Reworked bot list + +
Previous Updates + ## January - Added `$afkChannelID` - Added `$afkTimeout[]` @@ -33,6 +39,8 @@ - Added `$threadMessageCount` - Added `$threadUserCount` - Added `$voiceUserLimit[]` + +
# 2024 From e8572d0b477a80fffcd499b159756df14b0f0344 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 15 Nov 2025 14:01:13 +0300 Subject: [PATCH 0295/1179] Update chrome.css --- src/theme/css/chrome.css | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 00f159f15ba..dc9c8c930a1 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1374,7 +1374,13 @@ ul#searchresults span.teaser em { @media (max-width: 950px) { #nameScript span { - top: -45%; + top: -35%; + } + + #nameScript textarea { + border-radius: 15px; + font-size: 2rem; + height: 2.75rem; } } @@ -1567,3 +1573,4 @@ ul#searchresults span.teaser em { + From be48938d52a47a87c6da7c3ba4718fc093bd39a1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 1 Dec 2025 21:42:23 +0300 Subject: [PATCH 0296/1179] Update CHANGELOG.md New functions --- src/CHANGELOG.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index cec23ad4ac6..1da9c3fec27 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -8,12 +8,30 @@ # 2025 -## September -- Reworked bot list +### Upcoming +- Components v2 (A lot of new functions!) +- Cheaper premium points for iOS Users +## December +- HTTP Awaiting Limit: 5s > 35s +- Fixed `$ceil[]` +- Fixed `$floor[]` +- Fixed `$getLeaderboardPosition[]`
Previous Updates +## November +- Major improvements to hosting infrastructure +- Reworked bot status preview +- HTTP Awaiting Limit: 15s > 5s + +## October +- Added setting to disable code highlighting in the command editor + +## September +- Updated BDFD App icon for iOS 26 +- Reworked bot list + ## January - Added `$afkChannelID` - Added `$afkTimeout[]` From 93e9c8a01716b007cf7d7c74ff8f270109fee7e0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 2 Dec 2025 00:14:29 +0300 Subject: [PATCH 0297/1179] Update chrome.css --- src/theme/css/chrome.css | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index dc9c8c930a1..240ddc29273 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1374,13 +1374,7 @@ ul#searchresults span.teaser em { @media (max-width: 950px) { #nameScript span { - top: -35%; - } - - #nameScript textarea { - border-radius: 15px; - font-size: 2rem; - height: 2.75rem; + top: -45%; } } From ef60a7b15c2d31bec1db2369954124b6df708214 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 2 Dec 2025 15:43:50 +0300 Subject: [PATCH 0298/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 1da9c3fec27..704fde7a255 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -32,6 +32,9 @@ - Updated BDFD App icon for iOS 26 - Reworked bot list +## February +- Fixed app crashing during premium points purchases + ## January - Added `$afkChannelID` - Added `$afkTimeout[]` From 018d50a27d0d49e6b6fffc0528dd21bd1b4fa6cc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 6 Dec 2025 18:31:26 +0300 Subject: [PATCH 0299/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 704fde7a255..5e66cbdac69 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -10,9 +10,13 @@ ### Upcoming - Components v2 (A lot of new functions!) -- Cheaper premium points for iOS Users +- Removing the "Translation Endpoints" setting +- Now the text in the app is automatically translated using AI ## December +- Added "Sign out other sessions" +- Redesigned Premium Points shop +- A lot of app bug fixes - HTTP Awaiting Limit: 5s > 35s - Fixed `$ceil[]` - Fixed `$floor[]` From b9c5426ed3ab3cc17874b3c0b6faebe32141b875 Mon Sep 17 00:00:00 2001 From: Kito Date: Sun, 7 Dec 2025 05:47:55 +0300 Subject: [PATCH 0300/1179] fix(workflow): use mdBook v0.4.52 chore(workflow): use mdbook-admonish v1.20.0 mdBook v0.5 got many breaking changes making mdbook-admonish to crash the build wiki job --- .github/workflows/book_deploy.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/book_deploy.yml b/.github/workflows/book_deploy.yml index 80c191d36da..edd5c1c257a 100644 --- a/.github/workflows/book_deploy.yml +++ b/.github/workflows/book_deploy.yml @@ -18,8 +18,8 @@ jobs: env: GH_TOKEN: ${{ github.token }} run: |- - gh release download -R rust-lang/mdBook -p mdbook-*-x86_64-unknown-linux-gnu.tar.gz - gh release download -R tommilligan/mdbook-admonish -p mdbook-admonish-*-x86_64-unknown-linux-gnu.tar.gz + gh release download v0.4.52 -R rust-lang/mdBook -p mdbook-*-x86_64-unknown-linux-gnu.tar.gz + gh release download v1.20.0 -R tommilligan/mdbook-admonish -p mdbook-admonish-*-x86_64-unknown-linux-gnu.tar.gz gh release download -R NilPointer-Software/mdbook-discord-components -p mdbook-discord-components-*.tar.gz for file in *.tar.gz @@ -151,3 +151,4 @@ jobs: style: 5 label: Preview site url: https://wiki.botdesignerdiscord.com/nightly/${{ env.LINK }} + From 4840677f14dcd2cc0bcc47fd17bf8fb9a1a15c04 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Dec 2025 08:52:12 +0300 Subject: [PATCH 0301/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 5e66cbdac69..d1da90d7879 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -12,9 +12,10 @@ - Components v2 (A lot of new functions!) - Removing the "Translation Endpoints" setting - Now the text in the app is automatically translated using AI +- Ability to change app icon — New app icons! ## December -- Added "Sign out other sessions" +- Added "Sign out other sessions" button - Redesigned Premium Points shop - A lot of app bug fixes - HTTP Awaiting Limit: 5s > 35s From a071efb572004a4bb2e12b40c139c90f5ae72ccf Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Dec 2025 08:53:21 +0300 Subject: [PATCH 0302/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index d1da90d7879..61e53c26f97 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -37,6 +37,9 @@ - Updated BDFD App icon for iOS 26 - Reworked bot list +## July +- BDScript bug fixes + ## February - Fixed app crashing during premium points purchases From 7e1fc53941566a0c2c4fe5a80007c3049b6d8b4f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Dec 2025 08:54:53 +0300 Subject: [PATCH 0303/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 61e53c26f97..f2c6118bdfe 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -16,6 +16,7 @@ ## December - Added "Sign out other sessions" button +- Smoother animations in the app - Redesigned Premium Points shop - A lot of app bug fixes - HTTP Awaiting Limit: 5s > 35s From 0d985ca09a5efbb0a8d195ea4a51787c6b04eb05 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Dec 2025 08:55:14 +0300 Subject: [PATCH 0304/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index f2c6118bdfe..aa8887be0fe 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -11,7 +11,7 @@ ### Upcoming - Components v2 (A lot of new functions!) - Removing the "Translation Endpoints" setting -- Now the text in the app is automatically translated using AI +- Text in the app is automatically translated using AI - Ability to change app icon — New app icons! ## December From 2c1f21d25df88d893e264287c2105f8eaf5db684 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Dec 2025 08:59:50 +0300 Subject: [PATCH 0305/1179] Update chrome.css --- src/theme/css/chrome.css | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 240ddc29273..843a242df04 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1372,10 +1372,16 @@ ul#searchresults span.teaser em { font-size: 0.8em; } -@media (max-width: 950px) { - #nameScript span { - top: -45%; - } +@media (max-width: 950px) { + #nameScript span { + top: -35%; + } + + #nameScript textarea { + border-radius: 15px; + font-size: 2rem; + height: 2.75rem; + } } #selectors { From e19954c008174d94f3da7bf890c0397729cdcf0d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 7 Dec 2025 21:02:00 +0300 Subject: [PATCH 0306/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index aa8887be0fe..0cff46fd2e7 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -777,10 +777,10 @@ - Released new stable version
-```admonish tip -If you want to access this changelog externally, we have a [JSON version](https://raw.githubusercontent.com/NilPointer-Software/bdfd-wiki/dev/external/CHANGELOG.json) of the changelog to which you can send a GET request and work with a JSON document further. -``` - ```admonish abstract title="Flowchart Changelog" If you want to see the BDScript changelog, [click here](./FLOWCHART_CHANGELOG.md). +``` + +```admonish tip +If you want to access this changelog externally, we have a [JSON version](https://raw.githubusercontent.com/NilPointer-Software/bdfd-wiki/dev/external/CHANGELOG.json) of the changelog to which you can send a GET request and work with a JSON document further. ``` From a78d42182c69b2acf28378bd71e79fd2b1572d26 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 14 Dec 2025 18:08:54 +0300 Subject: [PATCH 0307/1179] Update awaitReactions.md --- src/premium/awaitReactions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/awaitReactions.md b/src/premium/awaitReactions.md index 50e30e35475..564b6316416 100644 --- a/src/premium/awaitReactions.md +++ b/src/premium/awaitReactions.md @@ -18,7 +18,7 @@ $awaitReactions[;...] ``` $nomention Yes or no? -$awaitReactions[✅;yes;❌;no] +$awaitReactions[yes;✅;no;❌] $addReactions[✅;❌] ``` ``` discord yaml From cbb3171ee520d00ac5fb198f9133c15e9304c06b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 16 Dec 2025 20:25:39 +0300 Subject: [PATCH 0308/1179] Create timestamp.md --- src/tools/timestamp.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/tools/timestamp.md diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md new file mode 100644 index 00000000000..6f9d1025930 --- /dev/null +++ b/src/tools/timestamp.md @@ -0,0 +1 @@ +# Timestamp Converter \ No newline at end of file From a2eef13ecf2f02be9239701146b6edebac61763b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 16 Dec 2025 20:25:58 +0300 Subject: [PATCH 0309/1179] Create embed.md --- src/tools/embed.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/tools/embed.md diff --git a/src/tools/embed.md b/src/tools/embed.md new file mode 100644 index 00000000000..100b90c06cb --- /dev/null +++ b/src/tools/embed.md @@ -0,0 +1 @@ +# Embed Builder \ No newline at end of file From b288a48cef7110095395b8c0664f7367ba93b703 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 16 Dec 2025 20:26:29 +0300 Subject: [PATCH 0310/1179] Create escape.md --- src/tools/escape.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/tools/escape.md diff --git a/src/tools/escape.md b/src/tools/escape.md new file mode 100644 index 00000000000..b73cc047de9 --- /dev/null +++ b/src/tools/escape.md @@ -0,0 +1 @@ +# Character Escaping \ No newline at end of file From 560d5dd7e04bc4d1bff9ed6a79d744ffe31bdd16 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 16 Dec 2025 20:28:32 +0300 Subject: [PATCH 0311/1179] Update SUMMARY.md --- src/SUMMARY.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 83f81210dca..e8bd28bb51c 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -43,7 +43,10 @@ - [Common BDFD Errors](./guides/other/commonErrors.md) - [Tools]() + - [Character Escaping](./tools/escapes.md) + - [Timestamp Converter](./tools/timestamp.md) - [Editor](./tools/editor.md) + - [Embed Builder[(./tools/embed.md) - [Resources]() - [Introduction](./resources/introduction.md) From bdfe8565774d6ba943a5223b43a1186a24aebe44 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 16 Dec 2025 20:29:10 +0300 Subject: [PATCH 0312/1179] Update SUMMARY.md --- src/SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index e8bd28bb51c..2b45f4e6d36 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -43,7 +43,7 @@ - [Common BDFD Errors](./guides/other/commonErrors.md) - [Tools]() - - [Character Escaping](./tools/escapes.md) + - [Character Escaping](./tools/escape.md) - [Timestamp Converter](./tools/timestamp.md) - [Editor](./tools/editor.md) - [Embed Builder[(./tools/embed.md) From 3f4548248193fcc802e87ea9170b812ea11a8f15 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 16 Dec 2025 20:31:53 +0300 Subject: [PATCH 0313/1179] Update SUMMARY.md --- src/SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 2b45f4e6d36..86871ac4f50 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -46,7 +46,7 @@ - [Character Escaping](./tools/escape.md) - [Timestamp Converter](./tools/timestamp.md) - [Editor](./tools/editor.md) - - [Embed Builder[(./tools/embed.md) + - [Embed Builder](./tools/embed.md) - [Resources]() - [Introduction](./resources/introduction.md) From 3fb90b1a35e48ffd587bb6ae1aca17b98736c6cf Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 16 Dec 2025 21:34:21 +0300 Subject: [PATCH 0314/1179] Create color --- src/tools/color | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/tools/color diff --git a/src/tools/color b/src/tools/color new file mode 100644 index 00000000000..4ceeed37b45 --- /dev/null +++ b/src/tools/color @@ -0,0 +1 @@ +# Color \ No newline at end of file From 5e5d2f6a19cbb823fc2e1393bd2480fcd3f0e86e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 16 Dec 2025 21:35:17 +0300 Subject: [PATCH 0315/1179] Update SUMMARY.md --- src/SUMMARY.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 86871ac4f50..23815ae7110 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -44,8 +44,9 @@ - [Tools]() - [Character Escaping](./tools/escape.md) + - [Code Editor](./tools/editor.md) + - [Color](./toold/color.md) - [Timestamp Converter](./tools/timestamp.md) - - [Editor](./tools/editor.md) - [Embed Builder](./tools/embed.md) - [Resources]() From 105c92561d743eeddeead1f4d624568d321bf587 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 16 Dec 2025 21:41:47 +0300 Subject: [PATCH 0316/1179] Update timestamp.md --- src/tools/timestamp.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 6f9d1025930..9268629471d 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -1 +1,3 @@ -# Timestamp Converter \ No newline at end of file +# Timestamp Converter + + \ No newline at end of file From 639fc876873bbac5b72d07859d98993038cc2750 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:19:33 +0300 Subject: [PATCH 0317/1179] Delete color --- src/tools/color | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/tools/color diff --git a/src/tools/color b/src/tools/color deleted file mode 100644 index 4ceeed37b45..00000000000 --- a/src/tools/color +++ /dev/null @@ -1 +0,0 @@ -# Color \ No newline at end of file From e76e8f51f4b503007004828732e3e3cc7db327f5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:19:49 +0300 Subject: [PATCH 0318/1179] Create color.md --- src/tools/color.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/tools/color.md diff --git a/src/tools/color.md b/src/tools/color.md new file mode 100644 index 00000000000..1db922c987a --- /dev/null +++ b/src/tools/color.md @@ -0,0 +1 @@ +# Color hex \ No newline at end of file From 86c6a7abfe1d59cb96410da9d41db1ab35615c70 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:20:35 +0300 Subject: [PATCH 0319/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 23815ae7110..d9ebd4099c3 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -43,6 +43,7 @@ - [Common BDFD Errors](./guides/other/commonErrors.md) - [Tools]() + - [Color](./tools/color.md) - [Character Escaping](./tools/escape.md) - [Code Editor](./tools/editor.md) - [Color](./toold/color.md) From 7fea14c14366aadfe205c37051386153e669beff Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:23:06 +0300 Subject: [PATCH 0320/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index d9ebd4099c3..35d4679c054 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -46,7 +46,6 @@ - [Color](./tools/color.md) - [Character Escaping](./tools/escape.md) - [Code Editor](./tools/editor.md) - - [Color](./toold/color.md) - [Timestamp Converter](./tools/timestamp.md) - [Embed Builder](./tools/embed.md) From 0d867f2ab78b851a283c043cd30e3d420517beac Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:28:21 +0300 Subject: [PATCH 0321/1179] Update timestamp.md --- src/tools/timestamp.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 9268629471d..fce4850565b 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -1,3 +1,9 @@ # Timestamp Converter + + \ No newline at end of file From d37fd7157c4e0acad79099c1f79336b0450e8d3d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:34:35 +0300 Subject: [PATCH 0322/1179] Update timestamp.md --- src/tools/timestamp.md | 285 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 280 insertions(+), 5 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index fce4850565b..aebe23772b8 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -1,9 +1,284 @@ # Timestamp Converter - + +
+

📅 Unix Time Converter

+ +
+

📅 Date to Unix Time

+ + + + +
+ 0 +
+
+
+ +
+

Unix Time to Date

+ + + + +
+ Not set +
+
+
+ +
+ +
+
- \ No newline at end of file + + \ No newline at end of file From d63bb9e91082173f79b147c05b1473e4411de1c6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:36:26 +0300 Subject: [PATCH 0323/1179] Update timestamp.md --- src/tools/timestamp.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index aebe23772b8..be9ef0c2d45 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -86,7 +86,6 @@ color: #2c3e50; } -

📅 Unix Time Converter

@@ -280,5 +279,4 @@ // Вставляем кнопки после поля ввода Unix Time unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); }); - - \ No newline at end of file + \ No newline at end of file From 211ee27ece47a582d57d0c2427d1305a8e493149 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:38:53 +0300 Subject: [PATCH 0324/1179] Update timestamp.md --- src/tools/timestamp.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index be9ef0c2d45..51dc6e2476f 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -1,4 +1,5 @@ # Timestamp Converter + -
+ +

📅 Unix Time Converter

@@ -116,9 +118,9 @@
-
+
- \ No newline at end of file + \ No newline at end of file From 221112ce9d65e68d7994d537ee2c0802939dc245 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:44:19 +0300 Subject: [PATCH 0325/1179] Update timestamp.md --- src/tools/timestamp.md | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 51dc6e2476f..197ace64f64 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -1,24 +1,12 @@ # Timestamp Converter -
+

📅 Unix Time Converter

From c79cc15feb0cd6387551e79d7adcb89c2e305002 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:44:45 +0300 Subject: [PATCH 0326/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 197ace64f64..8b9b760c4f6 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -4,7 +4,7 @@ .block-time { background-color: white; border-radius: 10px; - padding: 30px; + padding: 5px; box-shadow: 0 5px 15px rgba(0,0,0,0.1); } .converter-section { From be371ffe7afba07f7b55be8eb7230238aaefb887 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:47:56 +0300 Subject: [PATCH 0327/1179] Update timestamp.md --- src/tools/timestamp.md | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 8b9b760c4f6..9f8be693a2b 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -76,10 +76,7 @@ } -
-

📅 Unix Time Converter

- -
+

📅 Date to Unix Time

@@ -91,21 +88,20 @@
-
-

Unix Time to Date

- - +
+

Unix Time to Date

+ + - -
- Not set -
-
-
+ +
+ Not set +
+
+
-
- -
+
+
\ No newline at end of file +
\ No newline at end of file From 927f49caccf17e54a40b6ffe64b818d59282e1ab Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 14:56:18 +0300 Subject: [PATCH 0331/1179] Update playground.js --- src/theme/playground.js | 132 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 131 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index b415f889879..b371756ea6c 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -852,7 +852,137 @@ function changeAutocomplete() { - +// Timestamp + +const datetimePicker = document.getElementById('datetimepicker'); +const unixTimeDisplay = document.getElementById('unixtime-display'); +const timestampInfo = document.getElementById('timestamp-info'); +const unixInput = document.getElementById('unix-input'); +const dateDisplay = document.getElementById('date-display'); +const dateInfo = document.getElementById('date-info'); +const currentTimeEl = document.getElementById('current-time'); + +const now = new Date(); +const year = now.getFullYear(); +const month = String(now.getMonth() + 1).padStart(2, '0'); +const day = String(now.getDate()).padStart(2, '0'); +const hours = String(now.getHours()).padStart(2, '0'); +const minutes = String(now.getMinutes()).padStart(2, '0'); + +datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; + +const currentUnixTime = Math.floor(now.getTime() / 1000); +unixInput.value = currentUnixTime; + +updateUnixTime(); +updateDateFromUnix(); + +function updateCurrentTime() { + const now = new Date(); + const timeString = now.toLocaleString(); + const unixTime = Math.floor(now.getTime() / 1000); + currentTimeEl.textContent = `Current time: ${timeString} (Unix: ${unixTime})`; +} + +window.updateUnixTime = function() { + const selectedDate = new Date(datetimePicker.value); + + if (!isNaN(selectedDate.getTime())) { + const unixTime = Math.floor(selectedDate.getTime() / 1000); + const dateString = selectedDate.toLocaleString(); + + unixTimeDisplay.textContent = unixTime; + timestampInfo.textContent = `Selected: ${dateString}`; + + if (parseInt(unixInput.value) !== unixTime) { + unixInput.value = unixTime; + updateDateFromUnix(); + } + } +} + +window.updateDateFromUnix = function() { + const unixTime = parseInt(unixInput.value); + + if (!isNaN(unixTime) && unixTime >= 0) { + const date = new Date(unixTime * 1000); + + if (!isNaN(date.getTime())) { + const dateString = date.toLocaleString(); + const isoString = date.toISOString().replace('T', ' ').substring(0, 19); + + dateDisplay.textContent = dateString; + dateInfo.textContent = `ISO: ${isoString}`; + + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + const hours = String(date.getHours()).padStart(2, '0'); + const minutes = String(date.getMinutes()).padStart(2, '0'); + + const datetimeLocalValue = `${year}-${month}-${day}T${hours}:${minutes}`; + + if (datetimePicker.value !== datetimeLocalValue) { + datetimePicker.value = datetimeLocalValue; + } + } + } else if (unixInput.value === '') { + dateDisplay.textContent = 'Not set'; + dateInfo.textContent = ''; + } else { + dateDisplay.textContent = 'Invalid timestamp'; + dateInfo.textContent = 'Please enter a valid Unix timestamp'; + } +} + +updateCurrentTime(); +setInterval(updateCurrentTime, 1000); + +document.addEventListener('DOMContentLoaded', function() { + const quickButtons = document.createElement('div'); + quickButtons.style.marginTop = '10px'; + quickButtons.style.display = 'flex'; + quickButtons.style.gap = '10px'; + quickButtons.style.flexWrap = 'wrap'; + + const times = [ + {label: 'Now', seconds: 0}, + {label: '1 hour ago', seconds: -3600}, + {label: '1 day ago', seconds: -86400}, + {label: '1 week ago', seconds: -604800}, + {label: 'New Year 2024', seconds: 1704067200} + ]; + + times.forEach(time => { + const button = document.createElement('button'); + button.textContent = time.label; + button.style.padding = '8px 12px'; + button.style.border = 'none'; + button.style.borderRadius = '4px'; + button.style.backgroundColor = '#3498db'; + button.style.color = 'white'; + button.style.cursor = 'pointer'; + button.style.fontSize = '14px'; + + button.onclick = function() { + let unixTime; + if (time.seconds === 0) { + unixTime = Math.floor(Date.now() / 1000); + } else if (time.seconds > 0) { + unixTime = time.seconds; + } else { + unixTime = Math.floor(Date.now() / 1000) + time.seconds; + } + + unixInput.value = unixTime; + updateDateFromUnix(); + }; + + quickButtons.appendChild(button); + }); + + unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); +}); From 791956ca4a1521b8d18af3a7f004e481cd6ba5b7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 14:57:39 +0300 Subject: [PATCH 0332/1179] Update timestamp.md --- src/tools/timestamp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index c0e6437e148..53779632ab3 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -67,7 +67,7 @@

📅 Date to Unix Time

- +
0
@@ -76,7 +76,7 @@

Unix Time to Date

- +
From d0cb0a85dec1e6a3f0dcdf205f6e3a385a42dc51 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 15:00:41 +0300 Subject: [PATCH 0333/1179] Update playground.js --- src/theme/playground.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index b371756ea6c..352787605d5 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -874,9 +874,6 @@ datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; const currentUnixTime = Math.floor(now.getTime() / 1000); unixInput.value = currentUnixTime; -updateUnixTime(); -updateDateFromUnix(); - function updateCurrentTime() { const now = new Date(); const timeString = now.toLocaleString(); From 03fda5a036f387aec457d6dc396a87a50c0712fe Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 15:01:26 +0300 Subject: [PATCH 0334/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 53779632ab3..68323aeda4f 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -65,7 +65,7 @@

📅 Date to Unix Time

- +
From a9d95a14d23073b96ff1c0011f2f147810b36414 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 17 Dec 2025 15:06:31 +0300 Subject: [PATCH 0335/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 68323aeda4f..20066f511d0 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -65,7 +65,7 @@

📅 Date to Unix Time

- +
From 2732fa92d2b893970d32686dffbdb62106ac3c48 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:10:10 +0300 Subject: [PATCH 0336/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 0cff46fd2e7..44cce74b74d 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -10,6 +10,8 @@ ### Upcoming - Components v2 (A lot of new functions!) +- Channel select menu +- AI tool to generate BDScript codes - Removing the "Translation Endpoints" setting - Text in the app is automatically translated using AI - Ability to change app icon — New app icons! @@ -23,6 +25,8 @@ - Fixed `$ceil[]` - Fixed `$floor[]` - Fixed `$getLeaderboardPosition[]` +- AI Quota: 5000 > 10000 +- Log Quota: 1500 > 3000
Previous Updates From 686702a70893a73ca7dbd2beba5f4e91fab11151 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:11:03 +0300 Subject: [PATCH 0337/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 44cce74b74d..2f13ddf3691 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -27,6 +27,7 @@ - Fixed `$getLeaderboardPosition[]` - AI Quota: 5000 > 10000 - Log Quota: 1500 > 3000 +- Updated BDFD App icon for Android
Previous Updates From 1473ac79ee78622082b3469bbfe12a3157310107 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:11:29 +0300 Subject: [PATCH 0338/1179] Update log.md --- src/premium/log.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/log.md b/src/premium/log.md index a1b505d2378..2b98b56e420 100644 --- a/src/premium/log.md +++ b/src/premium/log.md @@ -6,7 +6,7 @@ Logs an error message to the bot logs upon encountering a specific issue (`Type` parameter). ```admonish info -You can use this function 1500 times per day. +You can use this function 3000 times per day. ``` ## Syntax From fe8ac66aa0af5071b5a21e1c2f918b36a910e9d1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:11:55 +0300 Subject: [PATCH 0339/1179] Update logQuota.md --- src/premium/logQuota.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/logQuota.md b/src/premium/logQuota.md index e4ea981d39a..9e14b52f51f 100644 --- a/src/premium/logQuota.md +++ b/src/premium/logQuota.md @@ -33,4 +33,4 @@ Remaining log entries: $logQuota > New log entries will be awarded and summed up every 24 hours! > -> Log entries limit (per bot): 1500 +> Log entries limit (per bot): 3000 From 01622016f403db3fa4f94880a09e2d2fb1bd8f54 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:12:50 +0300 Subject: [PATCH 0340/1179] Update aiQuota.md --- src/premium/aiQuota.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/aiQuota.md b/src/premium/aiQuota.md index e5782c61ad4..ebbfc0759fe 100644 --- a/src/premium/aiQuota.md +++ b/src/premium/aiQuota.md @@ -38,4 +38,4 @@ Remaining tokens: $aiQuota > New tokens will be awarded and summed up every 24 hours! > -> Token limit (per bot): 5000 *(20000 characters)* +> Token limit (per bot): 10000 *(40000 characters)* From f0bbaa75a097f1877ca80abdbf30b90f55bd2755 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:18:23 +0300 Subject: [PATCH 0341/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 20066f511d0..46c6394869a 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -5,7 +5,7 @@ margin-bottom: 30px; padding: 20px; border-radius: 8px; - background-color: #f8f9fa; + background-color: var(--color3); } label { font-weight: bold; From 4a49ee8f63268a0e171a41e5612584752b0bcb14 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:19:05 +0300 Subject: [PATCH 0342/1179] Update timestamp.md --- src/tools/timestamp.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 46c6394869a..25bce9d97b8 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -39,9 +39,6 @@ display: flex; align-items: center; } - .result span { - color: #1abc9c; - } .icon { display: inline-block; margin-right: 10px; From c2906d07f03fdc58ac740c2a1faa5b17018b3282 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:22:18 +0300 Subject: [PATCH 0343/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 25bce9d97b8..b17d8104fdf 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -29,7 +29,7 @@ .result { margin-top: 15px; padding: 15px; - background-color: #2c3e50; + background-color: var(--color2); color: white; border-radius: 6px; font-size: 18px; From ab8ddc1bfaceebcb8b0442b4b43edcb6316d3636 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:22:47 +0300 Subject: [PATCH 0344/1179] Update timestamp.md --- src/tools/timestamp.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index b17d8104fdf..4677fff1047 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -30,9 +30,7 @@ margin-top: 15px; padding: 15px; background-color: var(--color2); - color: white; - border-radius: 6px; - font-size: 18px; + border-radius: 10px; font-weight: bold; word-break: break-all; min-height: 50px; From 2085b42ddbf338ab1647506389dba18e3c6277da Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:30:42 +0300 Subject: [PATCH 0345/1179] Update timestamp.md --- src/tools/timestamp.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 4677fff1047..444fb755dff 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -2,10 +2,15 @@ From 7eebcffda2772293d483874c231e2654e6725461 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 12:33:21 +0300 Subject: [PATCH 0349/1179] Update timestamp.md --- src/tools/timestamp.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index dcbbad78423..ea323129c9b 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -21,7 +21,6 @@ input { width: 100%; padding: 12px; - font-size: 16px; border: 2px solid #ddd; border-radius: 6px; box-sizing: border-box; @@ -33,7 +32,7 @@ } .result { margin-top: 15px; - padding: 15px; + padding: 5px; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; font-weight: bold; @@ -48,7 +47,6 @@ font-size: 20px; } .timestamp { - font-size: 14px; color: #7f8c8d; margin-top: 5px; } From 57eb0be20a39553d3726902a6c276da690e2c3de Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 12:37:52 +0300 Subject: [PATCH 0350/1179] Update playground.js --- src/theme/playground.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 352787605d5..923e07f0af2 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -850,8 +850,6 @@ function changeAutocomplete() { } - - // Timestamp const datetimePicker = document.getElementById('datetimepicker'); @@ -876,9 +874,10 @@ unixInput.value = currentUnixTime; function updateCurrentTime() { const now = new Date(); - const timeString = now.toLocaleString(); + const dateString = now.toLocaleDateString(); const unixTime = Math.floor(now.getTime() / 1000); - currentTimeEl.textContent = `Current time: ${timeString} (Unix: ${unixTime})`; + + currentTimeEl.textContent = `${dateString}\n${unixTime}`; } window.updateUnixTime = function() { From b3f10d2995a22f6fbfa8589a195ca53e38530a7e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 12:55:50 +0300 Subject: [PATCH 0351/1179] Update playground.js --- src/theme/playground.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 923e07f0af2..ce4c9d59fbf 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -877,7 +877,7 @@ function updateCurrentTime() { const dateString = now.toLocaleDateString(); const unixTime = Math.floor(now.getTime() / 1000); - currentTimeEl.textContent = `${dateString}\n${unixTime}`; + currentTimeEl.innerHTML = `${dateString}
${unixTime}`; } window.updateUnixTime = function() { From 0e82965633fc3e46413e16c302901f203ed3f2dc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 12:56:50 +0300 Subject: [PATCH 0352/1179] Update timestamp.md --- src/tools/timestamp.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index ea323129c9b..b25ea3f0e67 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -22,7 +22,7 @@ width: 100%; padding: 12px; border: 2px solid #ddd; - border-radius: 6px; + border-radius: 10px; box-sizing: border-box; transition: border-color 0.3s; } @@ -37,7 +37,6 @@ border-radius: 10px; font-weight: bold; word-break: break-all; - min-height: 50px; display: flex; align-items: center; } @@ -52,7 +51,7 @@ } .current-time { text-align: center; - padding: 15px; + padding: 10px; background-color: var(--color3); border-radius: 10px; margin-top: 20px; From dd694026f6f98277b91285a45e8252e5c269ab19 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 12:59:11 +0300 Subject: [PATCH 0353/1179] Update timestamp.md --- src/tools/timestamp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index b25ea3f0e67..e5a455d268a 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -59,7 +59,7 @@
-

📅 Date to Unix Time

+

Date to Unix Time

@@ -70,7 +70,7 @@
-

Unix Time to Date

+

Unix Time to Date

From 53eef3e39467a3258d5ec65e82b802a6709c6599 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 12:59:28 +0300 Subject: [PATCH 0354/1179] Update timestamp.md --- src/tools/timestamp.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index e5a455d268a..246ce896d8b 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -40,11 +40,6 @@ display: flex; align-items: center; } - .icon { - display: inline-block; - margin-right: 10px; - font-size: 20px; - } .timestamp { color: #7f8c8d; margin-top: 5px; From 51d5823abdbcec09cba5f731d1bf0b8280737f32 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 13:02:34 +0300 Subject: [PATCH 0355/1179] Update timestamp.md --- src/tools/timestamp.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 246ce896d8b..3c4d112ad4f 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -12,6 +12,13 @@ border-radius: 12.5px; transition: 0.3s; } + .converter-section h2 { + margin-top: 60px; + padding-top: 15px; + } + .converter-section p { + margin-top: -15px; + } label { font-weight: bold; display: block; @@ -57,7 +64,7 @@

Date to Unix Time

- +

Unix Timestamp:

0
@@ -68,7 +75,7 @@

Unix Time to Date

- +

Date and Time:

Not set
From 29e042dfb63b460320bea67ab10904680bf228be Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 29 Dec 2025 13:03:26 +0300 Subject: [PATCH 0356/1179] Update timestamp.md --- src/tools/timestamp.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 3c4d112ad4f..00d6b9a6e83 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -2,10 +2,15 @@ + +# 2026 + +## January +- Added `$isJson[]` +- Added `$pi` +- Added Components v2 +- Added `$startsWith[]` +- Added `$endsWith[]` # 2025 From 6f53ea614e8b69dc76d395038c6e1c59df3017b3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:07:14 +0300 Subject: [PATCH 0364/1179] Update addSelectMenuOption.md --- src/bdscript/addSelectMenuOption.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addSelectMenuOption.md b/src/bdscript/addSelectMenuOption.md index 5a432212587..f7fad9b2833 100644 --- a/src/bdscript/addSelectMenuOption.md +++ b/src/bdscript/addSelectMenuOption.md @@ -3,11 +3,11 @@ Adds a new select menu option to an existing select menu. ## Syntax ``` -$addSelectMenuOption[Menu option ID;Label;Value;Description;(Default?;Emoji;Message ID)] +$addSelectMenuOption[Menu ID;Label;Value;Description;(Default?;Emoji;Message ID)] ``` ### Parameters -- `Menu option ID` `(Type: String || Flag: Required)`: The ID used in [`$newSelectMenu[]`](./newSelectMenu.md). +- `Menu ID` `(Type: String || Flag: Required)`: The ID used in [`$newSelectMenu[]`](./newSelectMenu.md). - `Label` `(Type: String || Flag: Required)`: The name of the option. - `Value` `(Type: String || Flag: Required)`: It's the data that gets passed to the `$onInteraction[]` callback. **The value has to be unique in the select menu!** - `Description` `(Type: String || Flag: Emptiable)`: A text which shows up under the `Label`. From e8e66248829581c241b67d80878827758865a248 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:08:03 +0300 Subject: [PATCH 0365/1179] Update aboutSelectMenu.md --- .../general/interactions/selectMenus/aboutSelectMenu.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/guides/general/interactions/selectMenus/aboutSelectMenu.md b/src/guides/general/interactions/selectMenus/aboutSelectMenu.md index 4c40d0795aa..f4093c173ac 100644 --- a/src/guides/general/interactions/selectMenus/aboutSelectMenu.md +++ b/src/guides/general/interactions/selectMenus/aboutSelectMenu.md @@ -16,9 +16,9 @@ $newSelectMenu[Menu ID;Min;Max;(Placeholder;Message ID)] ## Adding an Option ``` -$addSelectMenuOption[Menu option ID;Label;Value;Description;(Default;Emoji;Message ID)] +$addSelectMenuOption[Menu ID;Label;Value;Description;(Default;Emoji;Message ID)] ``` -- `Menu option ID` - it has to be the same as the ID used in `$newSelectMenu[]`. +- `Menu ID` - it has to be the same as the ID used in `$newSelectMenu[]`. - `Label` - the name of the option. - `Value` - it's the data that gets passed to `$onInteraction[]` callback. **The value has to be unique in the select menu!** - `Description` - it shows up under the `label`. @@ -89,7 +89,7 @@ $editSelectMenu[Menu ID;Min;Max;(Placeholder;Message ID)] ## $editSelectMenuOption ### Usage ``` -$editSelectMenuOption[Menu option ID;Label;Value;Description;(Default;Emoji;Message ID)] +$editSelectMenuOption[Menu ID;Label;Value;Description;(Default;Emoji;Message ID)] ``` > As you can notice, the arguments are exactly the same. From 89d652bd271a373a2cd2cc828da4a627204ea2cd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:12:16 +0300 Subject: [PATCH 0366/1179] Update httpRequests.md --- src/guides/general/httpRequests.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/guides/general/httpRequests.md b/src/guides/general/httpRequests.md index 07827eca495..cab960b4490 100644 --- a/src/guides/general/httpRequests.md +++ b/src/guides/general/httpRequests.md @@ -14,31 +14,31 @@ $httpGet[url] **POST** - The data sent to the server with POST is stored in the request body of the HTTP request. ``` -$httpPost[url;(body)] +$httpPost[URL;(Body)] ``` **PUT** - The PUT method replaces all current representations of the target resource with the request payload. ``` -$httpPut[url;(body)] +$httpPut[URL;(Body)] ``` **DELETE** - The DELETE method deletes the specified resource. ``` -$httpDelete[url;(body)] +$httpDelete[URL;(Body)] ``` **PATCH** - The PATCH method applies partial modifications to a resource. ``` -$httpPatch[url;(body)] +$httpPatch[URL;(Body)] ``` ## HTTP Headers - HTTP Headers is used to add more information. Most of the time, this is used to send an API Key to the API. ``` -$httpAddHeader[header name;header value] +$httpAddHeader[Header name;Header value] ``` ## HTTP Statuses From 107dce97a76744049393b69e5c67e0ee4257bbd3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:15:41 +0300 Subject: [PATCH 0367/1179] Update ifStatements.md --- src/guides/general/ifStatements.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/guides/general/ifStatements.md b/src/guides/general/ifStatements.md index 400852fce9e..fba3c5bc94d 100644 --- a/src/guides/general/ifStatements.md +++ b/src/guides/general/ifStatements.md @@ -36,8 +36,11 @@ Executes the following block of code if the provided condition is `true`. ## Syntax ``` $if[Condition] -``` -> `$if[]` uses the format of: if `x` is related accordingly (based on the "sign") with `y` then the code below runs. +``` + +```admonish info title="It's interesting!" +`$if[]` uses the format of: if `x` is related accordingly (based on the "sign") with `y` then the code below runs. +``` ### Parameters - `Condition` `(Type: String || Flag: Required)`: Check that will be carried out. Use [Signs](#signs). @@ -169,8 +172,13 @@ $endif # $elseif Checks provided condition only if previous `$if[]` or `$elseif[]` conditions returned `false`. If the provided condition is `true`, the following block of code will be executed. -> You can use multiple `$elseif`s. -> Only for **BDScript 2**! +```admonish tip +You can use multiple `$elseif`s. +``` + +```admonish danger title="BDScript 2" +Can only be used in **[BDScript 2](./bds2/aboutBDScript2.md)**. +``` ## Syntax ``` From 737f1e88e98c336ab339e1ec0ec14d3085c40de9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:18:03 +0300 Subject: [PATCH 0368/1179] Update webhooks.md --- src/guides/general/webhooks.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 9859027cb9f..4c289af76f0 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -1,12 +1,12 @@ # Webhooks This wiki explains how to create and use webhooks in BDFD. -## Creating A Webhook +## $webhookCreate +Creates and returns the URL of the newly created webhook **(webhook URLs should be kept private, treat them like a password)**. +> **Note:** Only ten webhooks can be created per channel. ``` -$webhookCreate[channelID;username;avatarURL (can be left empty)] +$webhookCreate[Channel ID;Username;(Avatar URL)] ``` -Creates a webhook in the provided 'channelID', with the inputted 'username' and 'avatarURL' assets. This function returns the URL of the newly created webhook **(webhook URLs should be kept private, treat them like a password)**. -> **Note:** Only ten webhooks can be created per channel. ## Editing A Webhook ``` From e78aa076a932b3cf93c84d0e9421ea65638a58b3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:20:11 +0300 Subject: [PATCH 0369/1179] Update webhooks.md --- src/guides/general/webhooks.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 4c289af76f0..f6e8b2b337d 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -1,12 +1,25 @@ # Webhooks This wiki explains how to create and use webhooks in BDFD. + +## Content +[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookCreate) + +## Functions Used +- [`$webhookCreate[]`](../../bdscript/webhookCreate.md) + +## Support Functions Used +- [`$var[]`](../../bdscript/var.md) -## $webhookCreate +# $webhookCreate Creates and returns the URL of the newly created webhook **(webhook URLs should be kept private, treat them like a password)**. > **Note:** Only ten webhooks can be created per channel. + +## Syntax ``` $webhookCreate[Channel ID;Username;(Avatar URL)] ``` + +### Parameters ## Editing A Webhook ``` From bb87c60bf42d228df08acadb74be995919ca28a4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:23:14 +0300 Subject: [PATCH 0370/1179] Update ifStatements.md --- src/guides/general/ifStatements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/ifStatements.md b/src/guides/general/ifStatements.md index fba3c5bc94d..77f2916ee16 100644 --- a/src/guides/general/ifStatements.md +++ b/src/guides/general/ifStatements.md @@ -173,7 +173,7 @@ $endif # $elseif Checks provided condition only if previous `$if[]` or `$elseif[]` conditions returned `false`. If the provided condition is `true`, the following block of code will be executed. ```admonish tip -You can use multiple `$elseif`s. +You can use multiple `$elseif`'s. ``` ```admonish danger title="BDScript 2" From 04e2fb9a7af17f91aad5292ef929270c70a0222f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:25:08 +0300 Subject: [PATCH 0371/1179] Update webhooks.md --- src/guides/general/webhooks.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index f6e8b2b337d..3e3299d8536 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -11,8 +11,15 @@ This wiki explains how to create and use webhooks in BDFD. - [`$var[]`](../../bdscript/var.md) # $webhookCreate -Creates and returns the URL of the newly created webhook **(webhook URLs should be kept private, treat them like a password)**. -> **Note:** Only ten webhooks can be created per channel. +Creates and returns the URL of the newly created webhook. + +```admonish danger +Webhook URLs should be kept private, don't share them! +``` + +```admonish warn +Only 10 webhooks can be created per channel. +``` ## Syntax ``` From a9f1f49c0e799bca50e65f41e0632a1d452377a1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:26:07 +0300 Subject: [PATCH 0372/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 3e3299d8536..8c2a94ce05c 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -2,7 +2,7 @@ This wiki explains how to create and use webhooks in BDFD. ## Content -[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookCreate) +[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#$webhookCreate) ## Functions Used - [`$webhookCreate[]`](../../bdscript/webhookCreate.md) From b3823675d8044599257367b116ed160e4d1ae95e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:26:58 +0300 Subject: [PATCH 0373/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 8c2a94ce05c..adb69598756 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -2,7 +2,7 @@ This wiki explains how to create and use webhooks in BDFD. ## Content -[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#$webhookCreate) +[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) ## Functions Used - [`$webhookCreate[]`](../../bdscript/webhookCreate.md) From bceff72b03676e2ca24c42779812d34d2a2cb94e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:27:55 +0300 Subject: [PATCH 0374/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index adb69598756..95120d09726 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -17,7 +17,7 @@ Creates and returns the URL of the newly created webhook. Webhook URLs should be kept private, don't share them! ``` -```admonish warn +```admonish warning Only 10 webhooks can be created per channel. ``` From 3db4382f68855771dbfdf0eaf401d7492c170a84 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:30:04 +0300 Subject: [PATCH 0375/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 95120d09726..a8765f62753 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -17,7 +17,7 @@ Creates and returns the URL of the newly created webhook. Webhook URLs should be kept private, don't share them! ``` -```admonish warning +```admonish warning title="Limit" Only 10 webhooks can be created per channel. ``` From 3e79101f88ccae64561f004bd310a70e27b11f97 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:35:14 +0300 Subject: [PATCH 0376/1179] Update asyncScopes.md --- src/guides/general/bds2/asyncScopes.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/guides/general/bds2/asyncScopes.md b/src/guides/general/bds2/asyncScopes.md index 959bf520eca..1ee2860da5b 100644 --- a/src/guides/general/bds2/asyncScopes.md +++ b/src/guides/general/bds2/asyncScopes.md @@ -1,6 +1,9 @@ # Async Runs functions in the background. Using async features properly can optimize your code and make it faster! -> **Warning:** Async features only work in [BDScript 2](./aboutBDScript2.md). + +```admonish danger title="BDScript 2" +Can only be used in **[BDScript 2](././bds2/aboutBDScript2.md)**. +``` ### Basics - Use `$async[name]` to start an async block. The name must be unique for each block. Functions inside async blocks run in the background without blocking the command's thread. From e41779d42409735ede3b80e2c76289e5531ab8f4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:42:46 +0300 Subject: [PATCH 0377/1179] Update webhooks.md --- src/guides/general/webhooks.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index a8765f62753..f650750098c 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -27,6 +27,15 @@ $webhookCreate[Channel ID;Username;(Avatar URL)] ``` ### Parameters +- `Channel ID` `(Type: Snowflake || Flag: Required)`: The channel in which the webhook will be created. +- `Username` `(Type: String || Flag: Required)`: Name of the webhook that will be displayed in the channel. +- `Avatar URL` `(Type: String || Flag: Vacantable)`: Avatar of the webhook that will be displayed in the channel. + +## Example +``` +$nomention +$webhookCreate[$channelID;BDFD Webhook 🤖] +``` ## Editing A Webhook ``` From 4a0f60681147b165c4e51d32e3bb8826e2411fb6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:44:45 +0300 Subject: [PATCH 0378/1179] Update threads.md --- src/guides/general/threads.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/guides/general/threads.md b/src/guides/general/threads.md index 7b0e9614f91..194a2f4cb1a 100644 --- a/src/guides/general/threads.md +++ b/src/guides/general/threads.md @@ -1,8 +1,10 @@ # Threads In this section, you'll learn how to integrate threads in your bot. - -> Make sure your bot has `SEND_MESSAGES_IN_THREADS` permission. + +```admonish warning +Make sure your bot has `SEND_MESSAGES_IN_THREADS` permission. +``` ## Content [**Functions Used**](#functions-used) > [**Archive Duration**](#archive-duration) > [**$startThread[]**](#startthread) > [**$editThread[]**](#editthread) > [**$threadAddMember[]**](#threadaddmember) > [**$threadRemoveMember[]**](#threadremovemember) > [**Simple Code**](#simple-code) @@ -26,9 +28,11 @@ Creates a new thread in the provided channel. ``` $startThread[Thread name;Channel ID;Message ID;(Archive duration;Return thread ID?)] ``` - -> Required permissions that the bot must have for this function to work properly: + +```admonish info +Required permissions that the bot must have for this function to work properly: - `createpublicthreads` +``` ### Parameters - `Thread name` `(Type: String || Flag: Required)`: The name of the newly created thread. @@ -77,8 +81,10 @@ $editThread[Thread ID;(Thread name;Archived?;Archive duration;Locked?;Slowmode)] - `Archive duration` `(Type: Integer || Flag: Optional)`: The [archive duration](#archive-duration) after which the thread will be auto-archived due to inactivity. Defaults to `60`. - `Locked?` `(Type: Bool || Flag: Optional)`: Whether to lock this thread or not. Note that archived threads can't be locked. - `Slowmode` `(Type: Integer || Flag: Optional)`: The slowmode of this channel, expressed in seconds. - -> Use `!unchanged` as an argument for the option to remain in its current state. + +```admonish tip +Use `!unchanged` as an argument for the option to remain in its current state. +``` ## Example ``` From 7def46ed169f851aea5e4ea157138e687e786924 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:45:35 +0300 Subject: [PATCH 0379/1179] Update asyncScopes.md --- src/guides/general/bds2/asyncScopes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/bds2/asyncScopes.md b/src/guides/general/bds2/asyncScopes.md index 1ee2860da5b..e5278560fa0 100644 --- a/src/guides/general/bds2/asyncScopes.md +++ b/src/guides/general/bds2/asyncScopes.md @@ -2,7 +2,7 @@ Runs functions in the background. Using async features properly can optimize your code and make it faster! ```admonish danger title="BDScript 2" -Can only be used in **[BDScript 2](././bds2/aboutBDScript2.md)**. +Can only be used in **[BDScript 2](./aboutBDScript2.md)**. ``` ### Basics From 391572de9efb4f9a444f9cab701f9cf954135c78 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:36:37 +0300 Subject: [PATCH 0380/1179] Update ai.md --- src/premium/ai.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/premium/ai.md b/src/premium/ai.md index cb4900216a4..ecddbf2205d 100644 --- a/src/premium/ai.md +++ b/src/premium/ai.md @@ -43,5 +43,7 @@ $ai[What is 2+5?;You are a math teacher] *We spent 3 tokens because the bot response length is 15. 15/4=3 (no rounding)* -> Use [`$aiQuota`](./aiQuota.md) to know how many tokens you have left. -> + +```admonish tip +Use [`$aiQuota`](./aiQuota.md) to know how many tokens you have left. +``` \ No newline at end of file From 9c21d32077a044f30f5a02515f1e02870b517db0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:37:21 +0300 Subject: [PATCH 0381/1179] Update aiQuota.md --- src/premium/aiQuota.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/premium/aiQuota.md b/src/premium/aiQuota.md index ebbfc0759fe..d61f38b416f 100644 --- a/src/premium/aiQuota.md +++ b/src/premium/aiQuota.md @@ -35,7 +35,8 @@ Remaining tokens: $aiQuota Remaining tokens: 2497 ``` \ - -> New tokens will be awarded and summed up every 24 hours! -> -> Token limit (per bot): 10000 *(40000 characters)* + +```admonish info +New tokens will be awarded and summed up every 24 hours! +- Token limit (per bot): 10000 *(40000 characters)* +``` \ No newline at end of file From 81ace20656743607d7ae828df8e1409040403af2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:38:07 +0300 Subject: [PATCH 0382/1179] Update awaitReactions.md --- src/premium/awaitReactions.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/premium/awaitReactions.md b/src/premium/awaitReactions.md index 564b6316416..863f840fca0 100644 --- a/src/premium/awaitReactions.md +++ b/src/premium/awaitReactions.md @@ -44,4 +44,7 @@ $addReactions[✅;❌] count: 1 ``` -> For more info, see the [Awaited Reactions Guide](../premium/awaitedReactions.md). + +```admonish info title="Read more" +For more information, read the the [Awaited Reactions Guide](../premium/awaitedReactions.md). +``` \ No newline at end of file From 2ac9bebd1a40f43ec9a3511c7fdddfa0329ad4d0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:38:43 +0300 Subject: [PATCH 0383/1179] Update customImage.md --- src/premium/customImage.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/premium/customImage.md b/src/premium/customImage.md index a522ce09f19..cc4b59195d3 100644 --- a/src/premium/customImage.md +++ b/src/premium/customImage.md @@ -33,5 +33,7 @@ $customImage[NiceImage] embed: image: https://user-images.githubusercontent.com/111157596/257596077-9836bafb-1c2a-4e1e-9cb3-9ca7725dcbf3.png ``` - -> For more info, see the [Custom Images Guide](../premium/customImages.md). + +```admonish info title="Read more" +For more information, read the the [Custom Images Guide](../premium/customImages.md). +``` \ No newline at end of file From 38cc5b15bc2899e1ba0146275aa83ea911f2a2be Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:39:55 +0300 Subject: [PATCH 0384/1179] Update logQuota.md --- src/premium/logQuota.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/premium/logQuota.md b/src/premium/logQuota.md index 9e14b52f51f..f893d39e6a4 100644 --- a/src/premium/logQuota.md +++ b/src/premium/logQuota.md @@ -31,6 +31,7 @@ Remaining log entries: $logQuota Remaining log entries: 1499 ``` -> New log entries will be awarded and summed up every 24 hours! -> -> Log entries limit (per bot): 3000 +```admonish info +New log entries will be awarded and summed up every 24 hours! +- Log entries limit (per bot): 3000 +``` \ No newline at end of file From 88ead4d591b5bf88357c3418df0dba591cef3d52 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:41:05 +0300 Subject: [PATCH 0385/1179] Update usedEmoji.md --- src/premium/usedEmoji.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/premium/usedEmoji.md b/src/premium/usedEmoji.md index 8fb2c736029..f3a64c811f1 100644 --- a/src/premium/usedEmoji.md +++ b/src/premium/usedEmoji.md @@ -4,8 +4,10 @@
This function returns the emoji which triggered a [`$reaction[]`](./reaction.md) callback. - -> This function can only be used inside a `$reaction[]` callback. + +```admonish warning +This function can only be used inside a `$reaction[]` callback. +``` ## Syntax ``` @@ -48,5 +50,7 @@ $sendMessage[Emoji: $usedEmoji] content: | Emoji: ✅ ``` - -> For more info, see the [Awaited Reactions Guide](./awaitedReactions.md). + +```admonish info title="Read more" +For more information, read the the [Awaited Reactions Guide](./awaitedReactions.md). +``` \ No newline at end of file From 50519d7d7c975e9b0a6149446b9024bdf1cdb3e4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:41:27 +0300 Subject: [PATCH 0386/1179] Update usedEmoji.md --- src/premium/usedEmoji.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/usedEmoji.md b/src/premium/usedEmoji.md index f3a64c811f1..1979ecb73c7 100644 --- a/src/premium/usedEmoji.md +++ b/src/premium/usedEmoji.md @@ -6,7 +6,7 @@ This function returns the emoji which triggered a [`$reaction[]`](./reaction.md) callback. ```admonish warning -This function can only be used inside a `$reaction[]` callback. +This function can only be used inside a [`$reaction[]`](./reaction.md) callback. ``` ## Syntax From 30b8b23e8c0be52148e1df280aa08541d87c650a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:42:57 +0300 Subject: [PATCH 0387/1179] Update awaitReactions.md --- src/premium/awaitReactions.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/premium/awaitReactions.md b/src/premium/awaitReactions.md index 863f840fca0..65fee914c2a 100644 --- a/src/premium/awaitReactions.md +++ b/src/premium/awaitReactions.md @@ -42,8 +42,11 @@ $addReactions[✅;❌] - emoji: https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Twemoji2_274c.svg/640px-Twemoji2_274c.svg.png name: ":x:" count: 1 -``` +``` +```admonish question title="What is this?" +How [`$addReactions[]`](../bdscript/addReactions.md) works? +``` ```admonish info title="Read more" For more information, read the the [Awaited Reactions Guide](../premium/awaitedReactions.md). From 49f8ecd29663588fd87749e25fa672209583121e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:43:59 +0300 Subject: [PATCH 0388/1179] Update usedEmoji.md --- src/premium/usedEmoji.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/premium/usedEmoji.md b/src/premium/usedEmoji.md index 1979ecb73c7..da991b24de0 100644 --- a/src/premium/usedEmoji.md +++ b/src/premium/usedEmoji.md @@ -51,6 +51,10 @@ $sendMessage[Emoji: $usedEmoji] Emoji: ✅ ``` +```admonish question title="What is this?" +How [`$sendMessage[]`](../bdscript/sendMessage.md) works? +``` + ```admonish info title="Read more" For more information, read the the [Awaited Reactions Guide](./awaitedReactions.md). ``` \ No newline at end of file From 9fd0b379c6c39b7ee2e94ec47529c82781f3a668 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:46:04 +0300 Subject: [PATCH 0389/1179] Update suppressErrorLogging.md --- src/premium/suppressErrorLogging.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/premium/suppressErrorLogging.md b/src/premium/suppressErrorLogging.md index 18c0e76718f..cc022acaad4 100644 --- a/src/premium/suppressErrorLogging.md +++ b/src/premium/suppressErrorLogging.md @@ -39,6 +39,10 @@ $suppressErrorLogging - Without `$suppressErrorLogging`:\ ![example](https://github.com/user-attachments/assets/245a7bc3-5efa-4d01-86d3-f57b46e93db2) +```admonish question title="What is this?" +How [`$createChannel[]`](../bdscript/createChannel.md) works? +``` + ```admonish tip You can use [`$suppressErrors`](../bdscript/suppressErrors.md) to disable error bot response. ``` From 6c2b688f462ad8f4d822819c692f9a6fdf4655a3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:47:28 +0300 Subject: [PATCH 0390/1179] Update log.md --- src/premium/log.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/log.md b/src/premium/log.md index df8ebb4678b..0040e27f349 100644 --- a/src/premium/log.md +++ b/src/premium/log.md @@ -23,7 +23,7 @@ $log[Text;(Type)] - `info`: Blue color - `warning`: Yellow color - `error`: Red color -- `bdscript`: Can't be used in `$log[]` function. Appears automatically when an error is made in the code. Can be disabled by [`$suppressErrorLogging`](./suppressErrorLogging.md). +- `bdscript`: **Can't be used** in `$log[]` function. Appears automatically when an error is made in the code. Can be disabled by [`$suppressErrorLogging`](./suppressErrorLogging.md). - Default input for "`Type`" parameter is `info`. ## Example From 3942e4aff9af10a59e26a067e87417694fbc337b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:49:11 +0300 Subject: [PATCH 0391/1179] Update sendNotification.md --- src/premium/sendNotification.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/premium/sendNotification.md b/src/premium/sendNotification.md index 60afe85be5d..c61294b5879 100644 --- a/src/premium/sendNotification.md +++ b/src/premium/sendNotification.md @@ -4,6 +4,10 @@
Sends a notification to your mobile phone. + +```admonish warning title="Limit" +Can be used every 20 minutes. +``` ## Syntax ``` From 03cc19bd5a22168722f256c3280bdf65861f42d5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:49:49 +0300 Subject: [PATCH 0392/1179] Update sendNotification.md --- src/premium/sendNotification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/sendNotification.md b/src/premium/sendNotification.md index c61294b5879..dc987966d2b 100644 --- a/src/premium/sendNotification.md +++ b/src/premium/sendNotification.md @@ -21,7 +21,7 @@ $sendNotification[Message;(Image URL)] ## Example ``` $nomention -$sendNotification[Hello, I miss you!;$userAvatar[$botID]] +$sendNotification[Hello world!;$authorAvatar] ``` ![example](https://i.imgur.com/yfSTLVY.png) From 6482c62dc2b41184b08e49a43e4769ce5545daa0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:50:26 +0300 Subject: [PATCH 0393/1179] Update sendNotification.md --- src/premium/sendNotification.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/premium/sendNotification.md b/src/premium/sendNotification.md index dc987966d2b..a9fd92e88d3 100644 --- a/src/premium/sendNotification.md +++ b/src/premium/sendNotification.md @@ -24,4 +24,8 @@ $nomention $sendNotification[Hello world!;$authorAvatar] ``` -![example](https://i.imgur.com/yfSTLVY.png) +![example](https://i.imgur.com/yfSTLVY.png) + +```admonish question title="What is this?" +How [`$authorAvatar`](../bdscript/authorAvatar.md) works? +``` From dbb4531ab6486f0885f3c908e0921d991643e2ad Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:53:32 +0300 Subject: [PATCH 0394/1179] Update customImage.md --- src/premium/customImage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/customImage.md b/src/premium/customImage.md index cc4b59195d3..02149c8b1b7 100644 --- a/src/premium/customImage.md +++ b/src/premium/customImage.md @@ -35,5 +35,5 @@ $customImage[NiceImage] ``` ```admonish info title="Read more" -For more information, read the the [Custom Images Guide](../premium/customImages.md). +For more information, read the the [Custom Images Guide](../premium/customImages.md). ``` \ No newline at end of file From b3278b758a5e2fa960a2ed2122f476cfa710eda2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:54:03 +0300 Subject: [PATCH 0395/1179] Update reaction.md --- src/premium/reaction.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/premium/reaction.md b/src/premium/reaction.md index c4bedcd97ca..033b00df151 100644 --- a/src/premium/reaction.md +++ b/src/premium/reaction.md @@ -48,4 +48,6 @@ $sendMessage[$username clicked on the reaction] Nicky clicked on the reaction ``` -> For more info, see the [Awaited Reactions Guide](../premium/awaitedReactions.md). +```admonish info title="Read more" +For more information, read the the [Awaited Reactions Guide](../premium/awaitedReactions.md). +``` \ No newline at end of file From 541b0892ab05ec552972fdaaf6c434f9b9ed1edc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:55:02 +0300 Subject: [PATCH 0396/1179] Update reaction.md --- src/premium/reaction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/reaction.md b/src/premium/reaction.md index 033b00df151..584517984eb 100644 --- a/src/premium/reaction.md +++ b/src/premium/reaction.md @@ -12,7 +12,7 @@ $reaction[Name] ``` ### Parameters -- `Name` `(Type: String || Flag: Required)`: The value used in "command name" argument of `$awaitReactions[]`. +- `Name` `(Type: String || Flag: Required)`: The value used in "Command name" parameter of `$awaitReactions[]`. ## Example ### Trigger `$reaction[click]` From 35f52f84b2968fec3fed22cfcb1b009875fb2720 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:56:30 +0300 Subject: [PATCH 0397/1179] Update reaction.md --- src/premium/reaction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/reaction.md b/src/premium/reaction.md index 584517984eb..52bd8e5dba1 100644 --- a/src/premium/reaction.md +++ b/src/premium/reaction.md @@ -12,7 +12,7 @@ $reaction[Name] ``` ### Parameters -- `Name` `(Type: String || Flag: Required)`: The value used in "Command name" parameter of `$awaitReactions[]`. +- `Name` `(Type: String || Flag: Required)`: The value used in "Command name" parameter of [`$awaitReactions[]`](../bdscript/awaitReactions.md). ## Example ### Trigger `$reaction[click]` From 4bd8671e9b05348811ae010e5025e12761f650ec Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 00:57:34 +0300 Subject: [PATCH 0398/1179] Update introduction.md --- src/premium/introduction.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/premium/introduction.md b/src/premium/introduction.md index e357f2ee9e8..711c453b9f6 100644 --- a/src/premium/introduction.md +++ b/src/premium/introduction.md @@ -34,9 +34,9 @@ One premium point equals one week (7 days) of premium hosting. Feature | Without premium | With premium | ------------------------------------------------------------------------------------------------------------------- | --- | ----- | Access to AI functions. ([`$ai[]`](./ai.md) and [`$aiQuota`](./aiQuota.md)) | ❌ | ✅ | -AI Tokens (per day) | 0 | 5000 | +AI Tokens (per day) | 0 | 10000 | Access to Bot Logs and to Bot Logs functions. (`$log[]`, `$disableErrorLogging` and `$logQuota`) | ❌ | ✅ | -Logs Quota (per day) | 0 | 1500 | +Logs Quota (per day) | 0 | 3000 | Access to [`$messageContains[]`](./messageContains.md) and [`$alwaysReply`](./alwaysReply.md) callbacks. | ❌ | ✅ | Access to [`$ignoreTriggerCase`](./ignoreTriggerCase.md) and [`$sendNotification`](./sendNotification.md) functions. | ❌ | ✅ | Access to ["Awaited Reactions"](./awaitedReactions.md). | ❌ | ✅ | From a7f5f751415e689afeea03673e2cd38964dba026 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 08:05:46 +0300 Subject: [PATCH 0399/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index df3e3f18c05..a5f93bf72c3 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -9,9 +9,11 @@ # 2026 ## January +- Added `$addTextDisplay[]` +- Added `$addSeparator[]` +- Added `$addContainer[]` - Added `$isJson[]` - Added `$pi` -- Added Components v2 - Added `$startsWith[]` - Added `$endsWith[]` From a30597f3d98072976e3393080abf0a1816cdad63 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 08:14:03 +0300 Subject: [PATCH 0400/1179] Create addContainer.md --- src/bdscript/addContainer.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/bdscript/addContainer.md diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md new file mode 100644 index 00000000000..161df03f7b4 --- /dev/null +++ b/src/bdscript/addContainer.md @@ -0,0 +1,14 @@ +# $addContainer +Adds a container component to the message. + +## Syntax +``` +$addContainer[Container ID;(Color;Spoiler?)] +``` + +### Parameters + +## Example +``` +$nomention +``` \ No newline at end of file From e792364734551061244c3aa4b1dc83fbc826b82e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 08:14:57 +0300 Subject: [PATCH 0401/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 35d4679c054..e5d975dc477 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -67,6 +67,7 @@ - [Introduction](./bdscript/introduction.md) - [$addButton](./bdscript/addButton.md) - [$addCmdReactions](./bdscript/addCmdReactions.md) + - [$addContainer](./bdscript/addContainer.md) - [$addEmoji](./bdscript/addEmoji.md) - [$addField](./bdscript/addField.md) - [$addMessageReactions](./bdscript/addMessageReactions.md) From 8ee4b1713be4be9c599b68c5582e3242c412f1a7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 08:19:01 +0300 Subject: [PATCH 0402/1179] Update addContainer.md --- src/bdscript/addContainer.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 161df03f7b4..f28ec880df1 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -3,10 +3,11 @@ Adds a container component to the message. ## Syntax ``` -$addContainer[Container ID;(Color;Spoiler?)] +$addContainer[Container ID;(Color hex;Spoiler?)] ``` ### Parameters +- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the container border color as. You can also use color integer number. ## Example ``` From ca50728a75ce235c09db48d74a58bb2c82f7a6d7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 08:24:22 +0300 Subject: [PATCH 0403/1179] Update addContainer.md --- src/bdscript/addContainer.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index f28ec880df1..20593eda400 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -12,4 +12,5 @@ $addContainer[Container ID;(Color hex;Spoiler?)] ## Example ``` $nomention +$addContainer[Container1;#673ab7;false] ``` \ No newline at end of file From 4af1833c9d5b467e30b962d6f250ab3ffe723713 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 10:30:32 +0300 Subject: [PATCH 0404/1179] Update sendNotification.md --- src/premium/sendNotification.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/premium/sendNotification.md b/src/premium/sendNotification.md index a9fd92e88d3..e0792b0eace 100644 --- a/src/premium/sendNotification.md +++ b/src/premium/sendNotification.md @@ -8,6 +8,10 @@ Sends a notification to your mobile phone. ```admonish warning title="Limit" Can be used every 20 minutes. ``` + +```admonish danger +Only for Android. Can't be used on iOS. +``` ## Syntax ``` From 0db56be9f97571a35a438b4f9a61152edc00bc52 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 10:31:46 +0300 Subject: [PATCH 0405/1179] Update sendNotification.md --- src/premium/sendNotification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/sendNotification.md b/src/premium/sendNotification.md index e0792b0eace..7787f159714 100644 --- a/src/premium/sendNotification.md +++ b/src/premium/sendNotification.md @@ -9,7 +9,7 @@ Sends a notification to your mobile phone. Can be used every 20 minutes. ``` -```admonish danger +```admonish danger title="Important" Only for Android. Can't be used on iOS. ``` From 70117ff16ad31e9600c18b5a51008040d193cc2a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 10:31:58 +0300 Subject: [PATCH 0406/1179] Update sendNotification.md --- src/premium/sendNotification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/premium/sendNotification.md b/src/premium/sendNotification.md index 7787f159714..6ac03a04a51 100644 --- a/src/premium/sendNotification.md +++ b/src/premium/sendNotification.md @@ -9,7 +9,7 @@ Sends a notification to your mobile phone. Can be used every 20 minutes. ``` -```admonish danger title="Important" +```admonish warning title="Limit" Only for Android. Can't be used on iOS. ``` From b076ac4c06760245b242bab1c2a526a9ba251a02 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 12:24:03 +0300 Subject: [PATCH 0407/1179] Update addContainer.md --- src/bdscript/addContainer.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 20593eda400..d7c0035652a 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -7,7 +7,9 @@ $addContainer[Container ID;(Color hex;Spoiler?)] ``` ### Parameters +- `Container ID` `(Type: String || Flag: Required)`: - `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the container border color as. You can also use color integer number. +- `Spoiler?` `(Type: Bool || Flag: Optional)`: ## Example ``` From 1d2f3a358d9d3c27c56de3c8207e22a86166ce58 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:04:21 +0300 Subject: [PATCH 0408/1179] Update addContainer.md --- src/bdscript/addContainer.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index d7c0035652a..7c70d23a14f 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -7,12 +7,13 @@ $addContainer[Container ID;(Color hex;Spoiler?)] ``` ### Parameters -- `Container ID` `(Type: String || Flag: Required)`: +- `Container ID` `(Type: String || Flag: Required)`: Main ID for attaching other container elements to container. - `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the container border color as. You can also use color integer number. -- `Spoiler?` `(Type: Bool || Flag: Optional)`: +- `Spoiler?` `(Type: Bool || Flag: Optional)`: Will the container have a spoiler effect? ## Example ``` $nomention $addContainer[Container1;#673ab7;false] +$addTextDisplay[Hello world!;Container1] ``` \ No newline at end of file From c14c47332bcb46b0743020eb8037835e5918c4de Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:05:39 +0300 Subject: [PATCH 0409/1179] Update addContainer.md --- src/bdscript/addContainer.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 7c70d23a14f..fc087f1d526 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -16,4 +16,8 @@ $addContainer[Container ID;(Color hex;Spoiler?)] $nomention $addContainer[Container1;#673ab7;false] $addTextDisplay[Hello world!;Container1] +``` + +```admonish question title="What is this?" +How [`$addTextDisplay[]`](./addTextDisplay.md) works? ``` \ No newline at end of file From 30188e268f01f7fc28aaf1f3bb3a66ad0b17dc5f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:09:07 +0300 Subject: [PATCH 0410/1179] Update addContainer.md --- src/bdscript/addContainer.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index fc087f1d526..0a9fb543a90 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -3,11 +3,14 @@ Adds a container component to the message. ## Syntax ``` -$addContainer[Container ID;(Color hex;Spoiler?)] +$addContainer[Container name;(Color hex;Spoiler?)] ``` ### Parameters -- `Container ID` `(Type: String || Flag: Required)`: Main ID for attaching other container elements to container. +- `Container name` `(Type: String || Flag: Required)`: Name for attaching other container elements to container. +```admonish warning +You can't have multiple containers **with the same name** in one message. +``` - `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the container border color as. You can also use color integer number. - `Spoiler?` `(Type: Bool || Flag: Optional)`: Will the container have a spoiler effect? From bd228c1d70426dcb9664eb315c15c81ae33b2b21 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:12:06 +0300 Subject: [PATCH 0411/1179] Update addContainer.md --- src/bdscript/addContainer.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 0a9fb543a90..0cecb3b9a5b 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -6,6 +6,10 @@ Adds a container component to the message. $addContainer[Container name;(Color hex;Spoiler?)] ``` +```admonish warning title="Limit" +You can have only 40 containers in one message. +``` + ### Parameters - `Container name` `(Type: String || Flag: Required)`: Name for attaching other container elements to container. ```admonish warning From 728708aa5abc39111273c0395ee4073569f61c0b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:12:43 +0300 Subject: [PATCH 0412/1179] Update addContainer.md --- src/bdscript/addContainer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 0cecb3b9a5b..1c7a285ba10 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -7,7 +7,7 @@ $addContainer[Container name;(Color hex;Spoiler?)] ``` ```admonish warning title="Limit" -You can have only 40 containers in one message. +A message can have a maximum of 40 containers. ``` ### Parameters From 75ec6890916ac59d6b24c0dd75984b39e796343b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:15:17 +0300 Subject: [PATCH 0413/1179] Update addContainer.md --- src/bdscript/addContainer.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 1c7a285ba10..1ce05b6d025 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -7,11 +7,11 @@ $addContainer[Container name;(Color hex;Spoiler?)] ``` ```admonish warning title="Limit" -A message can have a maximum of 40 containers. +A message can have a maximum of 20 containers (40 container components). ``` ### Parameters -- `Container name` `(Type: String || Flag: Required)`: Name for attaching other container elements to container. +- `Container name` `(Type: String || Flag: Required)`: Name for attaching other container components to container. ```admonish warning You can't have multiple containers **with the same name** in one message. ``` From db945d47267b837e3bef57c992174008399cd747 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:15:40 +0300 Subject: [PATCH 0414/1179] Update addContainer.md --- src/bdscript/addContainer.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 1ce05b6d025..2e6f6f6b4eb 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -15,6 +15,7 @@ A message can have a maximum of 20 containers (40 container components). ```admonish warning You can't have multiple containers **with the same name** in one message. ``` + - `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the container border color as. You can also use color integer number. - `Spoiler?` `(Type: Bool || Flag: Optional)`: Will the container have a spoiler effect? From 97bf555ff24b7296c7f3cab4a6e1dcbeeda837a1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:17:35 +0300 Subject: [PATCH 0415/1179] Update addContainer.md --- src/bdscript/addContainer.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 2e6f6f6b4eb..3eec0a3258b 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -1,5 +1,5 @@ # $addContainer -Adds a container component to the message. +Adds a container body to the message. ## Syntax ``` @@ -7,7 +7,7 @@ $addContainer[Container name;(Color hex;Spoiler?)] ``` ```admonish warning title="Limit" -A message can have a maximum of 20 containers (40 container components). +A message can have a maximum of 20 container bodies (40 container components). ``` ### Parameters From 7f1ff4d666b15879a5f12b45b51517b37d4426da Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:21:40 +0300 Subject: [PATCH 0416/1179] Update addContainer.md --- src/bdscript/addContainer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 3eec0a3258b..2910281dc3c 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -11,7 +11,7 @@ A message can have a maximum of 20 container bodies (40 container components). ``` ### Parameters -- `Container name` `(Type: String || Flag: Required)`: Name for attaching other container components to container. +- `Container name` `(Type: String || Flag: Required)`: Name for attaching other container components to container body. ```admonish warning You can't have multiple containers **with the same name** in one message. ``` From c5fb97666387c4a71bcfd64a8c4b85c592cfa90a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:23:15 +0300 Subject: [PATCH 0417/1179] Update addContainer.md --- src/bdscript/addContainer.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 2910281dc3c..87fb7846bef 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -26,6 +26,24 @@ $addContainer[Container1;#673ab7;false] $addTextDisplay[Hello world!;Container1] ``` +```discord yaml +- user_id: 729343563401265193 + username: Nicky + color: "#EE7908" + content: | + !example + +- user_id: 566613317972394004 + username: Wiki Bot + color: "#748BD4" + bot: true + verified: true + content: + embed: + description: Hello world! + color: "#673ab7" +``` + ```admonish question title="What is this?" How [`$addTextDisplay[]`](./addTextDisplay.md) works? ``` \ No newline at end of file From 329abe312a49acf1a7ada5baa85a95fbcb3ea2d6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:24:06 +0300 Subject: [PATCH 0418/1179] Update addContainer.md --- src/bdscript/addContainer.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 87fb7846bef..3d95b9fc70f 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -27,15 +27,14 @@ $addTextDisplay[Hello world!;Container1] ``` ```discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" content: | !example - -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" bot: true verified: true content: From 9045a7070e508df64731aae00ec580c6ae3d02da Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:24:44 +0300 Subject: [PATCH 0419/1179] Update addContainer.md --- src/bdscript/addContainer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 3d95b9fc70f..7c4620b8e78 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -11,7 +11,7 @@ A message can have a maximum of 20 container bodies (40 container components). ``` ### Parameters -- `Container name` `(Type: String || Flag: Required)`: Name for attaching other container components to container body. +- `Container name` `(Type: String || Flag: Required)`: Name for attaching other container components to the container body. ```admonish warning You can't have multiple containers **with the same name** in one message. ``` From 39206a276ac04af01c61d86d79d927adef057daa Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:26:04 +0300 Subject: [PATCH 0420/1179] Update addContainer.md --- src/bdscript/addContainer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 7c4620b8e78..0c6774057b2 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -13,7 +13,7 @@ A message can have a maximum of 20 container bodies (40 container components). ### Parameters - `Container name` `(Type: String || Flag: Required)`: Name for attaching other container components to the container body. ```admonish warning -You can't have multiple containers **with the same name** in one message. +You can't have multiple containers **with the same name** in one message. So for example, you can’t have two containers with the ID set to `Container1`. ``` - `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the container border color as. You can also use color integer number. From 1fe9c109ee864c8b1ec86a6c904b33e95f2cd45b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:26:22 +0300 Subject: [PATCH 0421/1179] Update addContainer.md --- src/bdscript/addContainer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 0c6774057b2..62e5c281da5 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -13,7 +13,7 @@ A message can have a maximum of 20 container bodies (40 container components). ### Parameters - `Container name` `(Type: String || Flag: Required)`: Name for attaching other container components to the container body. ```admonish warning -You can't have multiple containers **with the same name** in one message. So for example, you can’t have two containers with the ID set to `Container1`. +You can't have multiple containers **with the same name** in one message. So for example, you can’t have two containers with the name set to `Container1`. ``` - `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the container border color as. You can also use color integer number. From 9858f5bf5b1e2202408140a6399ad9782fec7540 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:34:30 +0300 Subject: [PATCH 0422/1179] Update addContainer.md --- src/bdscript/addContainer.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 62e5c281da5..9bea9d1a7e0 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -10,6 +10,10 @@ $addContainer[Container name;(Color hex;Spoiler?)] A message can have a maximum of 20 container bodies (40 container components). ``` +```admonish danger title="It's important!" +The container body must contain [container components](#container-components), otherwise the function will not work! +``` + ### Parameters - `Container name` `(Type: String || Flag: Required)`: Name for attaching other container components to the container body. ```admonish warning @@ -19,6 +23,10 @@ You can't have multiple containers **with the same name** in one message. So for - `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the container border color as. You can also use color integer number. - `Spoiler?` `(Type: Bool || Flag: Optional)`: Will the container have a spoiler effect? +## Container Components +- `$addTextDisplay[]` +- `$addSeparator[]` + ## Example ``` $nomention From b5ec441bd2c98e78f2b1957030c5580956ffb117 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:43:45 +0300 Subject: [PATCH 0423/1179] Update addContainer.md --- src/bdscript/addContainer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 9bea9d1a7e0..1cf33cfe4b1 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -24,7 +24,7 @@ You can't have multiple containers **with the same name** in one message. So for - `Spoiler?` `(Type: Bool || Flag: Optional)`: Will the container have a spoiler effect? ## Container Components -- `$addTextDisplay[]` +- [`$addTextDisplay[]`](./addTextDisplay.md) - `$addSeparator[]` ## Example From 13a1a938ba51cf60cd4da300c56f97d515ef3295 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:53:01 +0300 Subject: [PATCH 0424/1179] Create addTextDisplay.md --- src/bdscript/addTextDisplay.md | 49 ++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/bdscript/addTextDisplay.md diff --git a/src/bdscript/addTextDisplay.md b/src/bdscript/addTextDisplay.md new file mode 100644 index 00000000000..0392733df8d --- /dev/null +++ b/src/bdscript/addTextDisplay.md @@ -0,0 +1,49 @@ +# $addDisplayText +Adds a text display component to the container body or message. + +## Syntax +``` +$addDisplayText[Content;(Container name)] +``` + +```admonish warning title="Limit" +This function counts as a container component. A message can have a maximum of 40 container components. +``` + +### Parameters +- `Content` `(Type: String || Flag: Required)`: +```admonish info +Supports highlighting. +``` + +- `Container name` `(Type: String || Flag: Optional)`: + +## Example +``` +$nomention +$addTextDisplay[Simple text] +$addContainer[Container1;#673ab7;false] +$addTextDisplay[Hello world!;Container1] +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Simple text + embed: + description: Hello world! + color: "#673ab7" +``` + +```admonish question title="What is this?" +How [`$addContainer[]`](./addContainer.md) works? +``` \ No newline at end of file From 4ebade307194eb0ea27ad597ca843e6ce60bfc99 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:53:42 +0300 Subject: [PATCH 0425/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index e5d975dc477..e709670470b 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -73,6 +73,7 @@ - [$addMessageReactions](./bdscript/addMessageReactions.md) - [$addReactions](./bdscript/addReactions.md) - [$addSelectMenuOption](./bdscript/addSelectMenuOption.md) + - [$addTextDisplay](./bdscript/addTextDisplay.md) - [$addTextInput](./bdscript/addTextInput.md) - [$addTimestamp](./bdscript/addTimestamp.md) - [$addTimestamp[]](./bdscript/addTimestampComplex.md) From f78929062a02cec0262a331e418e1aba2911672a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:56:58 +0300 Subject: [PATCH 0426/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index e709670470b..edfb9394888 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -47,7 +47,6 @@ - [Character Escaping](./tools/escape.md) - [Code Editor](./tools/editor.md) - [Timestamp Converter](./tools/timestamp.md) - - [Embed Builder](./tools/embed.md) - [Resources]() - [Introduction](./resources/introduction.md) From 7b042ad698d065ff8f67ba019f1f2c66d21c96bb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:57:14 +0300 Subject: [PATCH 0427/1179] Delete embed.md --- src/tools/embed.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/tools/embed.md diff --git a/src/tools/embed.md b/src/tools/embed.md deleted file mode 100644 index 100b90c06cb..00000000000 --- a/src/tools/embed.md +++ /dev/null @@ -1 +0,0 @@ -# Embed Builder \ No newline at end of file From 3e74a5a8aaf7c70b1f459c4cf1b84de38947ae1b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:59:09 +0300 Subject: [PATCH 0428/1179] Update addTextDisplay.md --- src/bdscript/addTextDisplay.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addTextDisplay.md b/src/bdscript/addTextDisplay.md index 0392733df8d..64ff97068ec 100644 --- a/src/bdscript/addTextDisplay.md +++ b/src/bdscript/addTextDisplay.md @@ -1,9 +1,9 @@ -# $addDisplayText +# $addTextDisplay Adds a text display component to the container body or message. ## Syntax ``` -$addDisplayText[Content;(Container name)] +$addTextDisplay[Content;(Container name)] ``` ```admonish warning title="Limit" From 758b048ad5bd850d71c9ce5903c8c70801f44b2f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 22:00:34 +0300 Subject: [PATCH 0429/1179] Update description.md --- src/bdscript/description.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bdscript/description.md b/src/bdscript/description.md index 6c2e4046ff3..41181ee8927 100644 --- a/src/bdscript/description.md +++ b/src/bdscript/description.md @@ -3,12 +3,12 @@ Adds a description to an embed. ## Syntax ``` -$description[message;(index)] +$description[Message;(Index)] ``` ### Parameters -- `message` `(Type: String || Flag: Emptiable)`: The text to set the description as. It cannot exceed more than 4096 characters. -- `index` `(Type: Integer || Flag: Optional)`: What embed the description should belong to. The default is `1`. [(learn more)](../resources/embedIndexes.md) +- `Message` `(Type: String || Flag: Emptiable)`: The text to set the description as. It cannot exceed more than 4096 characters. +- `Index` `(Type: Integer || Flag: Optional)`: What embed the description should belong to. The default is `1`. [(learn more)](../resources/embedIndexes.md) ## Example ``` From a8449b99ddb0ae85d0b7e538fe849b27ceebdb20 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 22:18:33 +0300 Subject: [PATCH 0430/1179] Update addTextDisplay.md --- src/bdscript/addTextDisplay.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addTextDisplay.md b/src/bdscript/addTextDisplay.md index 64ff97068ec..b71bc2895c9 100644 --- a/src/bdscript/addTextDisplay.md +++ b/src/bdscript/addTextDisplay.md @@ -11,12 +11,12 @@ This function counts as a container component. A message can have a maximum of 4 ``` ### Parameters -- `Content` `(Type: String || Flag: Required)`: +- `Content` `(Type: String || Flag: Required)`: The text that will be displayed. The total number of characters in the message and container bodies cannot exceed 4000 characters. ```admonish info Supports highlighting. ``` -- `Container name` `(Type: String || Flag: Optional)`: +- `Container name` `(Type: String || Flag: Optional)`: The name of the container body to which the component will be attached. If nothing is specified, it will be attached to the message. ## Example ``` From 8c675d44a574f364f5a43be9cc49ab86e2a3053b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 22:21:34 +0300 Subject: [PATCH 0431/1179] Update addTextDisplay.md --- src/bdscript/addTextDisplay.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addTextDisplay.md b/src/bdscript/addTextDisplay.md index b71bc2895c9..d9c53e1ac71 100644 --- a/src/bdscript/addTextDisplay.md +++ b/src/bdscript/addTextDisplay.md @@ -13,7 +13,7 @@ This function counts as a container component. A message can have a maximum of 4 ### Parameters - `Content` `(Type: String || Flag: Required)`: The text that will be displayed. The total number of characters in the message and container bodies cannot exceed 4000 characters. ```admonish info -Supports highlighting. +Supports discord highlighting. ``` - `Container name` `(Type: String || Flag: Optional)`: The name of the container body to which the component will be attached. If nothing is specified, it will be attached to the message. From c50c24fae675bb8549024f59f78b6bf944aa56e8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 23:41:09 +0300 Subject: [PATCH 0432/1179] Update startThread.md --- src/bdscript/startThread.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/startThread.md b/src/bdscript/startThread.md index d7b69769dfe..adbdb3a29c1 100644 --- a/src/bdscript/startThread.md +++ b/src/bdscript/startThread.md @@ -3,7 +3,7 @@ Creates a new thread in the provided channel. ## Syntax ``` -$startThread[Name;Channel ID;Message ID;(Archive duration;Return thread/channel ID)] +$startThread[Name;Channel ID;Message ID;(Archive duration;Return thread/channel ID?)] ``` ### Parameters @@ -11,7 +11,7 @@ $startThread[Name;Channel ID;Message ID;(Archive duration;Return thread/channel - `Channel ID` `(Type: Snowflake || Flag: Required)`: The channel where the thread will be created. - `Message ID` `(Type: Snowflake || Flag: Emptiable)`: The message from which the thread will be created. Can be left empty. - `Archive duration` `(Type: Integer || Flag: Optional)`: The duration after which the thread will be auto-archived due to inactivity. Accepts `60` (1 hour), `1440` (1 day), `4320` (3 days), or `10080` (7 days) as input. Defaults to `60`. -- `Return thread/channel ID` `(Type: Bool || Flag: Optional)`: Whether to return the thread channel ID or not. Defaults to `no`. +- `Return thread/channel ID?` `(Type: Bool || Flag: Optional)`: Whether to return the thread channel ID or not. Defaults to `no`. ### Permissions Required permissions that the bot must have for this function to work properly: From 432002166fc8032a47c9710cef28ac3f09005c8f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 23:42:37 +0300 Subject: [PATCH 0433/1179] Update splitText.md --- src/bdscript/splitText.md | 59 ++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/src/bdscript/splitText.md b/src/bdscript/splitText.md index 210e821a32b..22266acb73a 100644 --- a/src/bdscript/splitText.md +++ b/src/bdscript/splitText.md @@ -1,22 +1,37 @@ -# $splitText -Retrieves a value from [`$textSplit[]`](./textSplit.md). - -> ⚠️ This function is used with `$textSplit[]`. - -## Syntax -``` -$splitText[Index] -``` - -### Parameters -- `Index` `(Type: HowMany || Flag: Required)`: The split value to get (e.g. `2` for the second split). You can also use `>` to return the last split value i.e `$splitText[>]`. - -## Example -``` -$nomention -$textSplit[Hi-Hello-Hey;-] -$splitText[2] -``` -> The above example will return output as `Hello`. - -> For more info, see the [Text Splitting Guide](../guides/general/textSplitting.md). +# $splitText +Each separated text has a number, i.e. an index. `$splitText` is a function that returns one of the elements of the separated text by an index or the sign `<` - the very first element, or `>` - the very last element. + +## Syntax +``` +$splitText[Index] +``` + +### Parameters +- `Index` `(Type: HowMany || Flag: Required)`: The split value to get (e.g. `2` for the second split). You can also use `>` to return the last split value i.e `$splitText[>]`. + +## Example + +``` +$nomention +$textSplit[hello world !; ] +> $splitText[<] +> $splitText[2] +> $splitText[>] +``` + +``` discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + hello + world + ! +``` \ No newline at end of file From f34e2267d2dfecb266749e159360cef21aedfbf7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 3 Jan 2026 23:43:52 +0300 Subject: [PATCH 0434/1179] Update splitText.md --- src/bdscript/splitText.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/splitText.md b/src/bdscript/splitText.md index 22266acb73a..be9218aff2e 100644 --- a/src/bdscript/splitText.md +++ b/src/bdscript/splitText.md @@ -34,4 +34,8 @@ $textSplit[hello world !; ] hello world ! +``` + +```admonish question title="What is this?" +How [`$textSplit[]`](./textSplit.md) works? ``` \ No newline at end of file From fc3fadf6f8bc2a2dd649016c3e7c7830433be32e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:15:45 +0300 Subject: [PATCH 0435/1179] Update slashCommandsCount.md --- src/bdscript/slashCommandsCount.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/slashCommandsCount.md b/src/bdscript/slashCommandsCount.md index fbd8561ef5e..94284c29c56 100644 --- a/src/bdscript/slashCommandsCount.md +++ b/src/bdscript/slashCommandsCount.md @@ -1,5 +1,9 @@ # $slashCommandsCount Returns the number of [slash commands](../guides/general/interactions/slashCommands/aboutSlashCommands.md) the bot has enabled. + +```admonish info +Counts only global slash commands. +``` ## Syntax ``` From 6e8a1e26cab064807a25f40ffa0c22b92e5ba189 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:16:41 +0300 Subject: [PATCH 0436/1179] Update setUserVar.md --- src/bdscript/setUserVar.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/setUserVar.md b/src/bdscript/setUserVar.md index 49e54a61995..f0b1d56851e 100644 --- a/src/bdscript/setUserVar.md +++ b/src/bdscript/setUserVar.md @@ -13,5 +13,7 @@ $setUserVar[Variable name;New value;(User ID;Guild ID)] - `Guild ID` `(Type: Snowflake || Flag: Optional)`: The guild to assign the new value to. Uses the current guild if no "Guild ID" is provided. > 📝 User variable values have a max character limit of **4999**. - -> For more info, see the [Variables Guide](../guides/introduction/variables.md). + +```admonish info title="Read more" +For more information, read the the [Variables Guide](../guides/introduction/variables.md). +``` \ No newline at end of file From 3db1066b3dd240543111d16491e217f32d579f98 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:16:56 +0300 Subject: [PATCH 0437/1179] Update variablesCount.md --- src/bdscript/variablesCount.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/variablesCount.md b/src/bdscript/variablesCount.md index bbe240ddce0..2552d905de7 100644 --- a/src/bdscript/variablesCount.md +++ b/src/bdscript/variablesCount.md @@ -28,4 +28,8 @@ $variablesCount[server] verified: true content: | 4 +``` + +```admonish info title="Read more" +For more information, read the the [Variables Guide](../guides/introduction/variables.md). ``` From 3b2411facdd0770a1c3d8a90b676e5af7aaf126b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:17:08 +0300 Subject: [PATCH 0438/1179] Update varExists.md --- src/bdscript/varExists.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/varExists.md b/src/bdscript/varExists.md index a15278341a7..1ab75797d90 100644 --- a/src/bdscript/varExists.md +++ b/src/bdscript/varExists.md @@ -43,4 +43,8 @@ $varExists[$message] ```admonish question title="What is this?" How [`$message`](./message.md) works? +``` + +```admonish info title="Read more" +For more information, read the the [Variables Guide](../guides/introduction/variables.md). ``` From 2fa3d96aa9d46e8e733337bca6d5ac2fe6b23a2a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:17:23 +0300 Subject: [PATCH 0439/1179] Update var.md --- src/bdscript/var.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/var.md b/src/bdscript/var.md index ddc3f2de938..4edb2c53de9 100644 --- a/src/bdscript/var.md +++ b/src/bdscript/var.md @@ -29,3 +29,7 @@ $var[ID;$sendMessage[$toLowercase[$message];yes]] $addButton[no;interactionID;Example;secondary;;;$var[ID]] ``` ![Example](https://user-images.githubusercontent.com/70456337/189480166-d37cbdb8-05ce-44e8-8f2e-14d030baa9a9.png) + +```admonish info title="Read more" +For more information, read the the [Variables Guide](../guides/introduction/variables.md). +``` \ No newline at end of file From 3d70bf9a22b658b19701ced8753c6df0a1e3e723 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:18:16 +0300 Subject: [PATCH 0440/1179] Update var.md --- src/bdscript/var.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/var.md b/src/bdscript/var.md index 4edb2c53de9..6f77b13cb66 100644 --- a/src/bdscript/var.md +++ b/src/bdscript/var.md @@ -6,7 +6,9 @@ Instead, it creates the variable automatically during it's runtime and gets dele The data stored in the temporary variable can only be retrieved during its execution period and is removed once it's finished. -> 📌 This function can only be used in `BDScript 2` script language. +```admonish danger title="BDScript 2" +Can only be used in **[BDScript 2](../guides/general/bds2/aboutBDScript2.md)**. +``` ## Syntax ``` From a3696fe849d21e6e4ccc4ea1bb9e417e30aed24a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:19:58 +0300 Subject: [PATCH 0441/1179] Update username.md --- src/bdscript/username.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/bdscript/username.md b/src/bdscript/username.md index a71a0cee64c..c1922f691f1 100644 --- a/src/bdscript/username.md +++ b/src/bdscript/username.md @@ -13,14 +13,16 @@ Hello $username! ``` ``` discord yaml -- user_id: 696368083517964288 - username: Spen - color: "#b9a0e0" - content: | - !example -- username: Wiki Bot - color: "#b9a0e0" - bot: true - content: | - Hello Spen! +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Hello rainbow_key! ``` From fc6e62922d2e3830989df47047b6c1c79be5e23c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:23:07 +0300 Subject: [PATCH 0442/1179] Update userJoinedDiscord.md --- src/bdscript/userJoinedDiscord.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/bdscript/userJoinedDiscord.md b/src/bdscript/userJoinedDiscord.md index 8ad63e48e6f..9ab79d60de6 100644 --- a/src/bdscript/userJoinedDiscord.md +++ b/src/bdscript/userJoinedDiscord.md @@ -4,18 +4,20 @@
> As of November 2022, this function has been deprecated in favor of [`$creationDate[]`](./creationDate.md). - -> Besides user IDs, `$userJoinedDiscord[]` can also return the creation date of any valid Discord Snowflake ID. + +```admonish info +Besides user IDs, `$userJoinedDiscord[]` can also return the creation date of any valid Discord Snowflake ID. +``` Returns the account creation date of a given user. ## Syntax ``` -$userJoinedDiscord[User ID;(Format)] +$userJoinedDiscord[ID;(Format)] ``` ### Parameters -- `User ID` `(Type: Snowflake || Flag: Required)`: The user whose account creation date will be returned. +- `ID` `(Type: Snowflake || Flag: Required)`: The user/channel/role/guild/message id whose creation date will be returned. - `Format` `(Type: String || Flag: Optional)`: Customize the default [time format](../resources/timeFormat.md) output. ## Example From 219b40824c1bd0ae1d3168d6c88258454b1cadf1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:24:55 +0300 Subject: [PATCH 0443/1179] Update addContainer.md --- src/bdscript/addContainer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 1cf33cfe4b1..702e5013626 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -10,7 +10,7 @@ $addContainer[Container name;(Color hex;Spoiler?)] A message can have a maximum of 20 container bodies (40 container components). ``` -```admonish danger title="It's important!" +```admonish fail title="It's important!" The container body must contain [container components](#container-components), otherwise the function will not work! ``` From d005eb12570b54c57ce6ddd8fb53cfc06875e05f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:25:57 +0300 Subject: [PATCH 0444/1179] Update userJoinedDiscord.md --- src/bdscript/userJoinedDiscord.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/bdscript/userJoinedDiscord.md b/src/bdscript/userJoinedDiscord.md index 9ab79d60de6..87a372cee57 100644 --- a/src/bdscript/userJoinedDiscord.md +++ b/src/bdscript/userJoinedDiscord.md @@ -2,11 +2,9 @@
Deprecated
- -> As of November 2022, this function has been deprecated in favor of [`$creationDate[]`](./creationDate.md). -```admonish info -Besides user IDs, `$userJoinedDiscord[]` can also return the creation date of any valid Discord Snowflake ID. +```admonish warning +As of November 2022, this function has been deprecated in favor of [`$creationDate[]`](./creationDate.md). ``` Returns the account creation date of a given user. @@ -15,6 +13,10 @@ Returns the account creation date of a given user. ``` $userJoinedDiscord[ID;(Format)] ``` + +```admonish info +Besides user IDs, `$userJoinedDiscord[]` can also return the creation date of any valid Discord Snowflake ID. +``` ### Parameters - `ID` `(Type: Snowflake || Flag: Required)`: The user/channel/role/guild/message id whose creation date will be returned. From 4c42bfa0143bad3c87725a2054013a244ec8733e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:27:23 +0300 Subject: [PATCH 0445/1179] Update varExistError.md --- src/bdscript/varExistError.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/varExistError.md b/src/bdscript/varExistError.md index 14ef0a69f36..2e6a906ef10 100644 --- a/src/bdscript/varExistError.md +++ b/src/bdscript/varExistError.md @@ -42,4 +42,8 @@ You are now cool! verified: true content: | You are now cool! +``` + +```admonish info title="Read more" +For more information, read the the [Variables Guide](../guides/introduction/variables.md). ``` From 57b80d4513fb59d16c19b867e3dbcad520d31a3d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:28:38 +0300 Subject: [PATCH 0446/1179] Update var.md --- src/bdscript/var.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/var.md b/src/bdscript/var.md index 6f77b13cb66..21d8b88ffbc 100644 --- a/src/bdscript/var.md +++ b/src/bdscript/var.md @@ -18,8 +18,10 @@ $var[Name;(Value)] ### Parameters - `Name` `(Type: String || Flag: Required)`: The name of the temporary variable. - `Value` `(Type: String || Flag: Vacantable)`: The data to store - -> 📌 To retrieve the temporary stored value, type `$var[Name]`, where *"Name"* is the temporary variable name. + +```admonish info +To retrieve the temporary stored value, type `$var[Name]`, where *"Name"* is the temporary variable name. +``` ## Example ``` From 3940230462191ed82f54426d975df75a87c02318 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:28:59 +0300 Subject: [PATCH 0447/1179] Update var.md --- src/bdscript/var.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/bdscript/var.md b/src/bdscript/var.md index 21d8b88ffbc..fa4f550f504 100644 --- a/src/bdscript/var.md +++ b/src/bdscript/var.md @@ -26,10 +26,7 @@ To retrieve the temporary stored value, type `$var[Name]`, where *"Name"* is the ## Example ``` $nomention -$argsCheck[>1;Type a message!] - $var[ID;$sendMessage[$toLowercase[$message];yes]] - $addButton[no;interactionID;Example;secondary;;;$var[ID]] ``` ![Example](https://user-images.githubusercontent.com/70456337/189480166-d37cbdb8-05ce-44e8-8f2e-14d030baa9a9.png) From 69e089d832ed0af34ed6ee2d7b196edca1a94d49 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:32:33 +0300 Subject: [PATCH 0448/1179] Update userBanner.md --- src/bdscript/userBanner.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/bdscript/userBanner.md b/src/bdscript/userBanner.md index 290d2b64048..c7b8961d6d7 100644 --- a/src/bdscript/userBanner.md +++ b/src/bdscript/userBanner.md @@ -18,6 +18,8 @@ $sendMessage[$userBanner[$findUser[$message]]?size=4096] ![example](https://user-images.githubusercontent.com/113303649/212497271-e2ebad00-2d78-4bdf-a697-c2863df527e2.png) ![example](https://user-images.githubusercontent.com/113303649/212497313-3824e855-d634-4e8a-848e-975d6d768df3.png) - -> You can use `?size=size` at the end of the banner URL to increase/decrease the image size. Example sizes: 1024, 2048, 4096. -> (e.g. `$image[$userBanner[$findUser[$message]]?size=4096]`) + +```admonish tip title="Image size" +You can use `?size=size` at the end of the banner URL to increase/decrease the image size. Example sizes: 1024, 2048, 4096. +(e.g. `$image[$userBanner[$findUser[$message]]?size=4096]`) +``` From 66c9af05245c47f2b45eaa0b5ecc8187b0ffcdef Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:33:00 +0300 Subject: [PATCH 0449/1179] Update userBanner.md --- src/bdscript/userBanner.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/bdscript/userBanner.md b/src/bdscript/userBanner.md index c7b8961d6d7..0245431eb77 100644 --- a/src/bdscript/userBanner.md +++ b/src/bdscript/userBanner.md @@ -4,8 +4,11 @@ Returns user banner if the given user has one. ## Syntax ``` $userBanner[User ID] -``` -> The function is unable to return the user's server banner. +``` + +```admonish fail +The function is unable to return the user's server banner. +``` ### Parameters - `User ID` `(Type: Snowflake || Flag: Required)`: The user to get the banner for. From 63fb408926c9aaaea4f04bb8bbf975510a246279 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:33:34 +0300 Subject: [PATCH 0450/1179] Update url.md --- src/bdscript/url.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/url.md b/src/bdscript/url.md index 81f76e5916d..6d651fc3004 100644 --- a/src/bdscript/url.md +++ b/src/bdscript/url.md @@ -1,7 +1,9 @@ # $url Encodes or decodes the provided text in the URL encoding format. - -> URL encoding is a method of converting reserved, unsafe, or non-ASCII characters to a URL format that is universally accepted and understood by all web browsers and servers while URL decoding is the vice-versa of URL encoding. + +```admonish info +URL encoding is a method of converting reserved, unsafe, or non-ASCII characters to a URL format that is universally accepted and understood by all web browsers and servers while URL decoding is the vice-versa of URL encoding. +``` ## Syntax ``` From 0038fae46941003abe8a262fb34738380393aebd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:34:08 +0300 Subject: [PATCH 0451/1179] Update unregisterGuildCommandsComplex.md --- src/bdscript/unregisterGuildCommandsComplex.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/bdscript/unregisterGuildCommandsComplex.md b/src/bdscript/unregisterGuildCommandsComplex.md index 284b5ae5dfe..6215617e55e 100644 --- a/src/bdscript/unregisterGuildCommandsComplex.md +++ b/src/bdscript/unregisterGuildCommandsComplex.md @@ -11,8 +11,7 @@ $unregisterGuildCommands[Slash command name;...] ## Example ``` -$nomention -$argsCheck[>1;Provide guild slash command names!] +$nomention $unregisterGuildCommands[$unescape[$toLowercase[$replaceText[$trimSpace[$message]; ;]]]] Successfully unregistered the provided guild slash commands! From d52376954ea875fd5d16b24d7b13694b7e3d230e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:35:03 +0300 Subject: [PATCH 0452/1179] Update unmute.md --- src/bdscript/unmute.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/unmute.md b/src/bdscript/unmute.md index df0bd6bb542..40af230eb27 100644 --- a/src/bdscript/unmute.md +++ b/src/bdscript/unmute.md @@ -2,8 +2,10 @@
Deprecated
- -> As of December 2021, this function has been deprecated in favor of [`$untimeout[]`](./untimeout.md). + +```admonish warning +As of December 2021, this function has been deprecated in favor of [`$untimeout[]`](./untimeout.md). +``` Unmutes the mentioned user. From fe671a599c5e46ce84c5ffe7518d82d75355aed2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:35:47 +0300 Subject: [PATCH 0453/1179] Update tts.md --- src/bdscript/tts.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/tts.md b/src/bdscript/tts.md index 859be433674..43636425ed5 100644 --- a/src/bdscript/tts.md +++ b/src/bdscript/tts.md @@ -1,7 +1,9 @@ # $tts Enables Text-to-Speech (TTS) functionality on the bot's response message. - -> 📌 The [TTS](https://support.discord.com/hc/en-us/articles/212517297-Text-to-Speech-101) feature is currently supported only in Discord Desktop and Webapp. + +```admonish warning +The [TTS](https://support.discord.com/hc/en-us/articles/212517297-Text-to-Speech-101) feature is currently supported only in Discord Desktop and Webapp. +``` ## Syntax ``` From dd4d0eb82b6230094a2aae8727976666f6cc506c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 08:58:05 +0300 Subject: [PATCH 0454/1179] Update addContainer.md --- src/bdscript/addContainer.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 702e5013626..167eedde8c7 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -1,4 +1,8 @@ # $addContainer +
+ Components v2 +
+ Adds a container body to the message. ## Syntax From 8b6ea1b934ac41a718ff4d0831a62b2daa241d94 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 08:58:31 +0300 Subject: [PATCH 0455/1179] Update addTextDisplay.md --- src/bdscript/addTextDisplay.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/addTextDisplay.md b/src/bdscript/addTextDisplay.md index d9c53e1ac71..4240e12a86f 100644 --- a/src/bdscript/addTextDisplay.md +++ b/src/bdscript/addTextDisplay.md @@ -1,4 +1,8 @@ # $addTextDisplay +
+ Components v2 +
+ Adds a text display component to the container body or message. ## Syntax From aab40f04e7a80d940d17a8e16ecf33161fb31d5d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 09:12:58 +0300 Subject: [PATCH 0456/1179] Create addSeparator.md --- src/bdscript/addSeparator.md | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/bdscript/addSeparator.md diff --git a/src/bdscript/addSeparator.md b/src/bdscript/addSeparator.md new file mode 100644 index 00000000000..6b6c9e2e437 --- /dev/null +++ b/src/bdscript/addSeparator.md @@ -0,0 +1,38 @@ +# $addSeparator +
+ Components v2 +
+ +Adds a separator component to the container body or message. + +## Syntax +``` +$addSeparator[(Divider?;Spacing type;Container name)] +``` + +```admonish warning title="Limit" +This function counts as a container component. A message can have a maximum of 40 container components. +``` + +### Parameters +- `Divider?` `(Type: Bool || Flag: Vacantable)`: Should the message show a visual divider? +- `Spacing type` `(Type: Enum || Flag: Vacantable)`: Type of the divider. [Possible types](#spacing-types). +- `Container name` `(Type: String || Flag: Optional)`: The name of the container body to which the component will be attached. If nothing is specified, it will be attached to the message. + +### Spacing Types +- `small` +- `large` + +## Example +``` +$nomention +$addTextDisplay[Hello world!] +$addSeparator[] +$addTextDisplay[I love BDFD] +$addSeparator[false] +$addTextDisplay[Components v2] +``` + +```admonish question title="What is this?" +How [`$addTextDisplay[]`](./addTextDisplay.md) works? +``` \ No newline at end of file From ce129823f6709c085dac054699f5d06e41fea8fa Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 09:13:24 +0300 Subject: [PATCH 0457/1179] Update addContainer.md --- src/bdscript/addContainer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 167eedde8c7..42400d10bfc 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -29,7 +29,7 @@ You can't have multiple containers **with the same name** in one message. So for ## Container Components - [`$addTextDisplay[]`](./addTextDisplay.md) -- `$addSeparator[]` +- [`$addSeparator[]`](./addSeparator.md) ## Example ``` From c421e0ceb0edae0d8e277a683fff3c75fbb16f56 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 09:14:12 +0300 Subject: [PATCH 0458/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index edfb9394888..72bb3bc7ade 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -72,6 +72,7 @@ - [$addMessageReactions](./bdscript/addMessageReactions.md) - [$addReactions](./bdscript/addReactions.md) - [$addSelectMenuOption](./bdscript/addSelectMenuOption.md) + - [$addSeparator](./bdscript/addSeparator.md) - [$addTextDisplay](./bdscript/addTextDisplay.md) - [$addTextInput](./bdscript/addTextInput.md) - [$addTimestamp](./bdscript/addTimestamp.md) From 12752bb76d920b44b557c53b378aa5491913b3f2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 09:14:47 +0300 Subject: [PATCH 0459/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index a5f93bf72c3..864f00c553b 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -12,6 +12,8 @@ - Added `$addTextDisplay[]` - Added `$addSeparator[]` - Added `$addContainer[]` +- Added `$addSection[]` +- Added `$addThumbnail[]` - Added `$isJson[]` - Added `$pi` - Added `$startsWith[]` From bb9d283ca50d97313ad0c8184de1af4393ce1696 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 09:19:09 +0300 Subject: [PATCH 0460/1179] Update addTextDisplay.md --- src/bdscript/addTextDisplay.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/bdscript/addTextDisplay.md b/src/bdscript/addTextDisplay.md index 4240e12a86f..63c2fdb2b75 100644 --- a/src/bdscript/addTextDisplay.md +++ b/src/bdscript/addTextDisplay.md @@ -3,24 +3,24 @@ Components v2
-Adds a text display component to the container body or message. +Adds a text display component. ## Syntax ``` -$addTextDisplay[Content;(Container name)] +$addTextDisplay[Content;(Container/Section name)] ``` ```admonish warning title="Limit" -This function counts as a container component. A message can have a maximum of 40 container components. +This function counts as a component. A message can have a maximum of 40 components. ``` ### Parameters -- `Content` `(Type: String || Flag: Required)`: The text that will be displayed. The total number of characters in the message and container bodies cannot exceed 4000 characters. +- `Content` `(Type: String || Flag: Required)`: The text that will be displayed. The total number of characters in the message, section and container bodies cannot exceed 4000 characters. ```admonish info Supports discord highlighting. ``` -- `Container name` `(Type: String || Flag: Optional)`: The name of the container body to which the component will be attached. If nothing is specified, it will be attached to the message. +- `Container/Section name` `(Type: String || Flag: Optional)`: The name of the container body or section to which the component will be attached. If nothing is specified, it will be attached to the message. ## Example ``` From b827a5bf2f8f23d938b620763b6a360e559911ec Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 11:31:42 +0300 Subject: [PATCH 0461/1179] Create addSection.md --- src/bdscript/addSection.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/bdscript/addSection.md diff --git a/src/bdscript/addSection.md b/src/bdscript/addSection.md new file mode 100644 index 00000000000..4524cf39cca --- /dev/null +++ b/src/bdscript/addSection.md @@ -0,0 +1,37 @@ +# $addSection +
+ Components v2 +
+ +Adds a section to the message. + +## Syntax +``` +$addSection[Section name] +``` + +```admonish fail title="It's important!" +The section body must contain all [section components](#section-components), otherwise the function will not work! +``` + +### Parameters +- `Section name` `(Type: String || Flag: Required)`: Name for attaching other section components to the section. +```admonish warning +You can't have multiple sections and [containers](./addContainer.md) **with the same name** in one message. So for example, you can’t have two sections with the name set to `section`. +``` + +## Container Components +- [`$addTextDisplay[]`](./addTextDisplay.md) +- [`$addThumbnail[]`](./addThumbnail.md) + +## Example +``` +$nomention +$addSection[section] +$addTextDisplay[Hello world!;section] +$addThumbnail[$authorAvatar;;;section] +``` + +```admonish question title="What is this?" +How [`$addTextDisplay[]`](./addTextDisplay.md), [`$addThumbnail[]`](./addThumbnail.md) and [`$authorAvatar`](./authorAvatar.md) works? +``` \ No newline at end of file From dfdf86777c2c47d63d735e10cf1237370fa1e773 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 11:33:00 +0300 Subject: [PATCH 0462/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 72bb3bc7ade..adc091cb9a3 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -71,6 +71,7 @@ - [$addField](./bdscript/addField.md) - [$addMessageReactions](./bdscript/addMessageReactions.md) - [$addReactions](./bdscript/addReactions.md) + - [$addSection](./bdscript/addSection.md) - [$addSelectMenuOption](./bdscript/addSelectMenuOption.md) - [$addSeparator](./bdscript/addSeparator.md) - [$addTextDisplay](./bdscript/addTextDisplay.md) From bf778e621c1cbe06b1ce7fd8f8699a66151f4992 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 11:35:38 +0300 Subject: [PATCH 0463/1179] Update addContainer.md --- src/bdscript/addContainer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 42400d10bfc..39012e4208a 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -21,7 +21,7 @@ The container body must contain [container components](#container-components), o ### Parameters - `Container name` `(Type: String || Flag: Required)`: Name for attaching other container components to the container body. ```admonish warning -You can't have multiple containers **with the same name** in one message. So for example, you can’t have two containers with the name set to `Container1`. +You can't have multiple containers and [sections](./addSection.md) **with the same name** in one message. So for example, you can’t have two containers with the name set to `Container1`. ``` - `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the container border color as. You can also use color integer number. From dfc265621dde1a76cbfb0a3e72557a631dffa143 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 11:38:38 +0300 Subject: [PATCH 0464/1179] Update authorAvatar.md --- src/bdscript/authorAvatar.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bdscript/authorAvatar.md b/src/bdscript/authorAvatar.md index c478dd50971..d55ec293223 100644 --- a/src/bdscript/authorAvatar.md +++ b/src/bdscript/authorAvatar.md @@ -26,8 +26,12 @@ $image[$authorAvatar] embed: image: https://user-images.githubusercontent.com/111157596/257052136-4b8d5715-b381-4d5f-8c46-8ae0be53c8d8.png ``` + +```admonish question title="What is this?" +How [`$image[]`](./image.md) works? +``` ```admonish tip title="Image size" -You can use `?size=size` at the end of the banner URL to increase/decrease the image size. Example sizes: 1024, 2048, 4096. +You can use `?size=size` at the end of the avatar URL to increase/decrease the image size. Example sizes: 1024, 2048, 4096. (e.g. `$image[$authorAvatar?size=4096]`) ``` From 81049f88c8d8e3578a1dd09c7fd239dcfaf8e323 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 11:46:24 +0300 Subject: [PATCH 0465/1179] Update addSection.md --- src/bdscript/addSection.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/bdscript/addSection.md b/src/bdscript/addSection.md index 4524cf39cca..be07bf5e2bf 100644 --- a/src/bdscript/addSection.md +++ b/src/bdscript/addSection.md @@ -21,6 +21,9 @@ You can't have multiple sections and [containers](./addContainer.md) **with the ``` ## Container Components +```admonish warning title="Limit" +Only 3 components can be added to the section. +``` - [`$addTextDisplay[]`](./addTextDisplay.md) - [`$addThumbnail[]`](./addThumbnail.md) From 3b74a1ee9fe897819f98fc0eca321794f3723746 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 11:56:30 +0300 Subject: [PATCH 0466/1179] Update addSection.md --- src/bdscript/addSection.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bdscript/addSection.md b/src/bdscript/addSection.md index be07bf5e2bf..e84663b72c5 100644 --- a/src/bdscript/addSection.md +++ b/src/bdscript/addSection.md @@ -20,10 +20,11 @@ The section body must contain all [section components](#section-components), oth You can't have multiple sections and [containers](./addContainer.md) **with the same name** in one message. So for example, you can’t have two sections with the name set to `section`. ``` -## Container Components +## Section Components ```admonish warning title="Limit" Only 3 components can be added to the section. ``` + - [`$addTextDisplay[]`](./addTextDisplay.md) - [`$addThumbnail[]`](./addThumbnail.md) From d0bdd83b2788973762722652cbed53a7dee5620a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 11:59:20 +0300 Subject: [PATCH 0467/1179] Update addSection.md --- src/bdscript/addSection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addSection.md b/src/bdscript/addSection.md index e84663b72c5..274ec477d4c 100644 --- a/src/bdscript/addSection.md +++ b/src/bdscript/addSection.md @@ -11,7 +11,7 @@ $addSection[Section name] ``` ```admonish fail title="It's important!" -The section body must contain all [section components](#section-components), otherwise the function will not work! +The section must contain all [section components](#section-components), otherwise the function will not work! ``` ### Parameters From b0e2e5fcf96b22caef6672fce6be6e3ce18d2ade Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 12:02:39 +0300 Subject: [PATCH 0468/1179] Update addSeparator.md --- src/bdscript/addSeparator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addSeparator.md b/src/bdscript/addSeparator.md index 6b6c9e2e437..bf3c3f2ddb0 100644 --- a/src/bdscript/addSeparator.md +++ b/src/bdscript/addSeparator.md @@ -11,7 +11,7 @@ $addSeparator[(Divider?;Spacing type;Container name)] ``` ```admonish warning title="Limit" -This function counts as a container component. A message can have a maximum of 40 container components. +This function counts as a container component. A message can have a maximum of 40 components. ``` ### Parameters From 7e799ed8c76d450f46eb59d9cced00a65163cd78 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 12:03:23 +0300 Subject: [PATCH 0469/1179] Update addSeparator.md --- src/bdscript/addSeparator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addSeparator.md b/src/bdscript/addSeparator.md index bf3c3f2ddb0..6079773fa50 100644 --- a/src/bdscript/addSeparator.md +++ b/src/bdscript/addSeparator.md @@ -3,7 +3,7 @@ Components v2
-Adds a separator component to the container body or message. +Adds a separator component to [the container body](./addContainer.md) or message. ## Syntax ``` From 5dfe1d103754fbc52721e7ba57000bf7c3d71433 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 12:06:00 +0300 Subject: [PATCH 0470/1179] Update addTextDisplay.md --- src/bdscript/addTextDisplay.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addTextDisplay.md b/src/bdscript/addTextDisplay.md index 63c2fdb2b75..a567580154d 100644 --- a/src/bdscript/addTextDisplay.md +++ b/src/bdscript/addTextDisplay.md @@ -15,12 +15,12 @@ This function counts as a component. A message can have a maximum of 40 componen ``` ### Parameters -- `Content` `(Type: String || Flag: Required)`: The text that will be displayed. The total number of characters in the message, section and container bodies cannot exceed 4000 characters. +- `Content` `(Type: String || Flag: Required)`: The text that will be displayed. The total number of characters in the message, [section](./addSection.md) and [container bodies](./addContainer.md) cannot exceed 4000 characters. ```admonish info Supports discord highlighting. ``` -- `Container/Section name` `(Type: String || Flag: Optional)`: The name of the container body or section to which the component will be attached. If nothing is specified, it will be attached to the message. +- `Container/Section name` `(Type: String || Flag: Optional)`: The name of the [container body](./addContainer.md) or [section](./addSection) to which the component will be attached. If nothing is specified, it will be attached to the message. ## Example ``` From 82a39a6abd1dd7ee1c5ee4c2c50b14cfd35d2855 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:46:42 +0300 Subject: [PATCH 0471/1179] Update premiumExpireTime.md --- src/bdscript/premiumExpireTime.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/premiumExpireTime.md b/src/bdscript/premiumExpireTime.md index 66fb8f51d6b..08a8dda8136 100644 --- a/src/bdscript/premiumExpireTime.md +++ b/src/bdscript/premiumExpireTime.md @@ -1,7 +1,9 @@ # $premiumExpireTime Returns how long until premium expires. - -> Returns "expired" if the bot is not premium. + +```admonish info +Returns `expired` if the bot is not premium. +``` ## Syntax ``` From 13e11db2856bc068a3196cecd14075899a5e40b4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:47:32 +0300 Subject: [PATCH 0472/1179] Update pinMessage.md --- src/bdscript/pinMessage.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/pinMessage.md b/src/bdscript/pinMessage.md index fb274504a27..ad7ecaf2571 100644 --- a/src/bdscript/pinMessage.md +++ b/src/bdscript/pinMessage.md @@ -1,7 +1,9 @@ # $pinMessage Pins the bot's response message in the current channel. - -> ⚠️ A channel can have a maximum of 250 pinned messages. + +```admonish warning title="Limit" +A channel can have a maximum of 250 pinned messages. +``` ## Syntax ``` From 3c4d7de3d6db9909b748f356af3e281027639a00 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:48:07 +0300 Subject: [PATCH 0473/1179] Update pinMessageComplex.md --- src/bdscript/pinMessageComplex.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/pinMessageComplex.md b/src/bdscript/pinMessageComplex.md index 59b4e28c715..0b6208fc558 100644 --- a/src/bdscript/pinMessageComplex.md +++ b/src/bdscript/pinMessageComplex.md @@ -1,7 +1,9 @@ # $pinMessage[] Pins a specific message using its channel and message ID. - -> ⚠️ A channel can have a maximum of 250 pinned messages. + +```admonish warning title="Limit" +A channel can have a maximum of 250 pinned messages. +``` ## Syntax ``` From 4a4819fbf07e1935e9562aea1df71a7427c9f537 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:48:30 +0300 Subject: [PATCH 0474/1179] Update ping.md --- src/bdscript/ping.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/ping.md b/src/bdscript/ping.md index ab36fe9effe..075e2df0f4e 100644 --- a/src/bdscript/ping.md +++ b/src/bdscript/ping.md @@ -1,5 +1,5 @@ # $ping -Returns the ping of the bot's node, in milliseconds. +Returns the ping of **the bot's node**, in milliseconds. ## Syntax ``` From f4ce42b6e75045a4625fbc1eed93aaadec6162df Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:49:26 +0300 Subject: [PATCH 0475/1179] Update onlyIf.md --- src/bdscript/onlyIf.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/bdscript/onlyIf.md b/src/bdscript/onlyIf.md index 7afa1626be7..4307dfab9d0 100644 --- a/src/bdscript/onlyIf.md +++ b/src/bdscript/onlyIf.md @@ -18,8 +18,6 @@ $onlyIf[Condition;Error message] - `<=` - Less Than Or Equal To - `>=` - Greater Than Or Equal To -> ⚠️ The signs `<`, `>`, `<=` and `>=` only work with numbers. - ## Examples #### Equal (`==`) ``` From 86e922f198a6f2bf169cf52dad540a4eda081f53 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:50:51 +0300 Subject: [PATCH 0476/1179] Update nodeVersionComplex.md --- src/bdscript/nodeVersionComplex.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/nodeVersionComplex.md b/src/bdscript/nodeVersionComplex.md index 702aea42fec..fc00415024e 100644 --- a/src/bdscript/nodeVersionComplex.md +++ b/src/bdscript/nodeVersionComplex.md @@ -8,8 +8,10 @@ $nodeVersion[Node Number] ### Parameters - `Node Number` `(Type: Integer || Flag: Required)`: The number of the node for which to return its version. - -> You can use [`$botNode`](./botNode.md) to find out which node your bot is on. + +```admonish tip +You can use [`$botNode`](./botNode.md) to find out which node your bot is on. +``` ## Example ``` From 58a2d79afaff7275c623f9b7b7b7912d38b4a819 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:51:25 +0300 Subject: [PATCH 0477/1179] Update noMentionMessageComplex.md --- src/bdscript/noMentionMessageComplex.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/noMentionMessageComplex.md b/src/bdscript/noMentionMessageComplex.md index 2bf3593dbe4..704860885be 100644 --- a/src/bdscript/noMentionMessageComplex.md +++ b/src/bdscript/noMentionMessageComplex.md @@ -8,8 +8,10 @@ $noMentionMessage[Argument number] ### Parameters - `Argument number` `(Type: HowMany || Flag: Required)`: Returns the argument matching the provided number *(excluding mentions)*. - -> For example, `$noMentionMessage[1]` would just return the first word of the message, ignoring any possible mentions before. You can also use `$noMentionMessage[>]` to get the last argument/word of the user's message. + +```admonish tip +For example, `$noMentionMessage[1]` would just return the first word of the message, ignoring any possible mentions before. You can also use `$noMentionMessage[>]` to get the last argument/word of the user's message. +``` ## Example ``` From 8df06f488922ef02a2a2d52ec237407998628a45 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:51:57 +0300 Subject: [PATCH 0478/1179] Update noMentionMessageComplex.md --- src/bdscript/noMentionMessageComplex.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/noMentionMessageComplex.md b/src/bdscript/noMentionMessageComplex.md index 704860885be..29ddb4e8d2f 100644 --- a/src/bdscript/noMentionMessageComplex.md +++ b/src/bdscript/noMentionMessageComplex.md @@ -9,7 +9,7 @@ $noMentionMessage[Argument number] ### Parameters - `Argument number` `(Type: HowMany || Flag: Required)`: Returns the argument matching the provided number *(excluding mentions)*. -```admonish tip +```admonish example For example, `$noMentionMessage[1]` would just return the first word of the message, ignoring any possible mentions before. You can also use `$noMentionMessage[>]` to get the last argument/word of the user's message. ``` From 9f4cb71f4b01940e4ddc363b0e958ee43a60698c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:52:45 +0300 Subject: [PATCH 0479/1179] Update nicknameComplex.md --- src/bdscript/nicknameComplex.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/nicknameComplex.md b/src/bdscript/nicknameComplex.md index e0fc0e26b54..74f995d9bf2 100644 --- a/src/bdscript/nicknameComplex.md +++ b/src/bdscript/nicknameComplex.md @@ -1,7 +1,9 @@ # $nickname[] Returns the nickname of the given user. - -> Nickname means the user's server nickname. If the user doesn't have a nickname then their display name is returned instead. + +```admonish info +Nickname means the user's server nickname. If the user doesn't have a nickname then their display name is returned instead. +``` ## Syntax ``` From c4f11a91cdbfe608938195fbd77a2a20560aa6f4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:53:06 +0300 Subject: [PATCH 0480/1179] Update nickname.md --- src/bdscript/nickname.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/nickname.md b/src/bdscript/nickname.md index 752c1d4bacb..f6f47204df0 100644 --- a/src/bdscript/nickname.md +++ b/src/bdscript/nickname.md @@ -1,7 +1,9 @@ # $nickname Returns the nickname of the author of the message. - -> Nickname means the user's server nickname. If the user doesn't have a nickname then their display name is returned instead. + +```admonish info +Nickname means the user's server nickname. If the user doesn't have a nickname then their display name is returned instead. +``` ## Syntax ``` From 5b793a8cbe5d01e9f4942077b5a805dc14f6c958 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:54:43 +0300 Subject: [PATCH 0481/1179] Update mute.md --- src/bdscript/mute.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/mute.md b/src/bdscript/mute.md index ea7c65872b7..5578fa2f580 100644 --- a/src/bdscript/mute.md +++ b/src/bdscript/mute.md @@ -3,7 +3,9 @@ Deprecated
-> This function is deprecated, instead better use [`$timeout[]`](https://nilpointer-software.github.io/bdfd-wiki/bdscript/timeout.html). +```admonish warning +As of December 2021, this function has been deprecated in favor of [`$timeout[]`](./timeout.md). +``` Mutes the mentioned user. From a5b4adfb07bb22139b296eab006db43cda2e3e83 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:55:47 +0300 Subject: [PATCH 0482/1179] Update modifyRole.md --- src/bdscript/modifyRole.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/modifyRole.md b/src/bdscript/modifyRole.md index b7e2a4709f1..8b0d9315e25 100644 --- a/src/bdscript/modifyRole.md +++ b/src/bdscript/modifyRole.md @@ -5,8 +5,10 @@ Modifies an existing role. ``` $modifyRole[Role ID;(Role name;Color hex;Hoisted?;Mentionable?)] ``` - -> You can use `!unchanged` as an argument to leave the setting as-is. + +```admonish tip +You can use `!unchanged` as an argument to leave the setting as-is. +``` ### Parameters - `Role ID` `(Type: Snowflake || Flag: Required)`: The ID of the role to modify. From 63c6883272f997e838af2b1bd6fc01e9d3a34c76 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:57:57 +0300 Subject: [PATCH 0483/1179] Update modifyChannelPerms.md --- src/bdscript/modifyChannelPerms.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/bdscript/modifyChannelPerms.md b/src/bdscript/modifyChannelPerms.md index 1fbd841ae26..6330fbeae43 100644 --- a/src/bdscript/modifyChannelPerms.md +++ b/src/bdscript/modifyChannelPerms.md @@ -3,8 +3,9 @@ Deprecated
-> This function is deprecated, instead better use [`$editChannelPerms[]`](./editChannelPerms.md). - +```admonish warning +This function has been deprecated in favor of [`$editChannelPerms[]`](./editChannelPerms.md). +``` Modifies a channel's permissions. ## Syntax From f02cb4abc148da704001dc79b4e1dc974ef96e87 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:59:22 +0300 Subject: [PATCH 0484/1179] Update modifyChannel.md --- src/bdscript/modifyChannel.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/bdscript/modifyChannel.md b/src/bdscript/modifyChannel.md index ce648cb05b8..8b18d78b381 100644 --- a/src/bdscript/modifyChannel.md +++ b/src/bdscript/modifyChannel.md @@ -13,10 +13,14 @@ $modifyChannel[Channel ID;(Channel Name;Topic;Make NSFW?;Position;Category ID)] - `Make NSFW?` `(Type: Bool || Flag: Vacantable)`: Whether the channel will be marked as NSFW or not. - `Position` `(Type: Integer || Flag: Vacantable)`: The new channel position *(1 = top)*. - `Category ID` `(Type: Snowflake || Flag: Vacantable)`: The category to which the channel should belong to. - -> You can use `!unchanged` as an parameter for the option to remain in its current state. - -> You can use `$channelID[Category/Channel Name]` to get the ID of a category or channel. + +```admonish tip +You can use `!unchanged` as an parameter for the option to remain in its current state. +``` + +```admonish tip +You can use [`$channelID[Category/Channel Name]`](./channelIDComplex.md) to get the ID of a category or channel. +``` ### Permissions Required permissions that the bot must have for this function to work properly : From 62a320393431adfc110360d682d8cf6f42d7e196 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:00:40 +0300 Subject: [PATCH 0485/1179] Update messageEditedTimestamp.md --- src/bdscript/messageEditedTimestamp.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/messageEditedTimestamp.md b/src/bdscript/messageEditedTimestamp.md index e21cec9c1ef..ab82523e73f 100644 --- a/src/bdscript/messageEditedTimestamp.md +++ b/src/bdscript/messageEditedTimestamp.md @@ -18,4 +18,6 @@ $messageEditedTimestamp[$channelID;$lastMessageID] ![](https://github.com/user-attachments/assets/a432d7ba-6824-481c-8cec-2d7880ebbd2f) -> [How to get the Message/Channel ID guide.](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) +```admonish help +[How to get the Message/Channel ID guide.](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) +``` \ No newline at end of file From fe4bc830ff5f3a746cdff88a65a4ae83c338bdc8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:01:37 +0300 Subject: [PATCH 0486/1179] Update messageComplex.md --- src/bdscript/messageComplex.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/bdscript/messageComplex.md b/src/bdscript/messageComplex.md index 1d21bb31121..02386fda055 100644 --- a/src/bdscript/messageComplex.md +++ b/src/bdscript/messageComplex.md @@ -9,13 +9,17 @@ $message[Argument number;(Argument name)] ### Parameters - `Argument number` `(Type: HowMany, String || Flag: Required)`: Returns the argument matching the provided number. - `Argument name` `(Type: String || Flag: Optional)`: Returns the input of the matching slash command option. - -> For example, `$message[1]` would just return the first word of the message. You can also use `$message[>]` to get the last argument/word of the user's message. + +```admonish example +For example, `$message[1]` would just return the first word of the message. You can also use `$message[>]` to get the last argument/word of the user's message. +``` ### Optimization If you want this function to work in a slash command **only**, then you can use `$message[Argument name]`. If this function should work in a normal **and** slash command, then you can use `$message[Argument number;Argument name]`. - -> For example, `$message[message]` would just return the input of the slash command option named "message". `$message[1;text]` would return the first word of the message **or** the input of the slash command option named "text". + +```admonish example +For example, `$message[message]` would just return the input of the slash command option named "message". `$message[1;text]` would return the first word of the message **or** the input of the slash command option named "text". +``` Find more info about optimizing `$message[]` for slash commands [here](../guides/general/interactions/slashCommands/aboutSlashCommands.md#retrieving-value-from-options). From e55f72bda81a5fab43921fdb522d8e2e882f75fd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:03:23 +0300 Subject: [PATCH 0487/1179] Update kickMention.md --- src/bdscript/kickMention.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/bdscript/kickMention.md b/src/bdscript/kickMention.md index 3b4d59e8bb0..b9a3946c9b0 100644 --- a/src/bdscript/kickMention.md +++ b/src/bdscript/kickMention.md @@ -1,7 +1,9 @@ # $kickMention -A simplified version of `$kick`. Kicks the mentioned user. - -> **Note:** The user running the command must have the "kick" permission. +A simplified version of [`$kick`](./kick.md). Kicks the mentioned user. + +```admonish warning +The user running the command must have the "kick" permission. +``` ## Syntax ``` From 63c5879879d928b73775bfb574d59e273bf12c88 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:04:15 +0300 Subject: [PATCH 0488/1179] Update isUserDMEnabled.md --- src/bdscript/isUserDMEnabled.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isUserDMEnabled.md b/src/bdscript/isUserDMEnabled.md index c962badc400..1bb706ac778 100644 --- a/src/bdscript/isUserDMEnabled.md +++ b/src/bdscript/isUserDMEnabled.md @@ -1,7 +1,9 @@ # $isUserDMEnabled Checks whether the bot can DM the user or not. - + +```admonish info > "true" means the bot can DM the user, "false" means it can't. +``` ## Syntax ``` From ddb6eda3b8d3a3bf2ac6b308a4868ef87b303861 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:04:35 +0300 Subject: [PATCH 0489/1179] Update isUserDMEnabled.md --- src/bdscript/isUserDMEnabled.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/isUserDMEnabled.md b/src/bdscript/isUserDMEnabled.md index 1bb706ac778..e94f8be1b7c 100644 --- a/src/bdscript/isUserDMEnabled.md +++ b/src/bdscript/isUserDMEnabled.md @@ -2,7 +2,7 @@ Checks whether the bot can DM the user or not. ```admonish info -> "true" means the bot can DM the user, "false" means it can't. +"true" means the bot can DM the user, "false" means it can't. ``` ## Syntax From 493a24229a2881fcd22a06ef925ff344c186c113 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:05:07 +0300 Subject: [PATCH 0490/1179] Update isTimedOut.md --- src/bdscript/isTimedOut.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isTimedOut.md b/src/bdscript/isTimedOut.md index 2a644e1f1f9..bd62a5f7107 100644 --- a/src/bdscript/isTimedOut.md +++ b/src/bdscript/isTimedOut.md @@ -1,7 +1,9 @@ # $isTimedOut Checks whether the specified user is timed out or not. -> "true" means the user is timed out, "false" means they aren't. +```admonish info +"true" means the user is timed out, "false" means they aren't. +``` ## Syntax ``` From 8c691d1b921076469ba18750e6fdbc7fb2823503 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:06:07 +0300 Subject: [PATCH 0491/1179] Update isTicket.md --- src/bdscript/isTicket.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isTicket.md b/src/bdscript/isTicket.md index 6e093655813..85860fe0795 100644 --- a/src/bdscript/isTicket.md +++ b/src/bdscript/isTicket.md @@ -1,7 +1,9 @@ # $isTicket Checks whether the current or specified channel is a ticket or not. -> "true" means the channel is a ticket, "false" means it isn't. +```admonish info +"true" means the channel is a ticket, "false" means it isn't. +``` ## Syntax ``` From d853136b4b01ceb421a39c8afe2880969656375f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:06:35 +0300 Subject: [PATCH 0492/1179] Update isTicket.md --- src/bdscript/isTicket.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bdscript/isTicket.md b/src/bdscript/isTicket.md index 85860fe0795..ada48801c2b 100644 --- a/src/bdscript/isTicket.md +++ b/src/bdscript/isTicket.md @@ -21,6 +21,7 @@ This is a ticket! ``` ![example](https://user-images.githubusercontent.com/113303649/212466758-7a11f906-f356-438d-8f64-0977c28b5a3c.png)\ ![example](https://user-images.githubusercontent.com/113303649/212466712-3e8d1768-af20-4ea3-9402-8668ae8d9ccc.png) - -> To create a ticket, use the [`$newTicket[]`](./newTicket.md) function. - + +```admonish tip +To create a ticket, use the [`$newTicket[]`](./newTicket.md) function. +``` From bbaacc4bde3c3670776f5205ab5554cb15a022c1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:06:59 +0300 Subject: [PATCH 0493/1179] Update isSlash.md --- src/bdscript/isSlash.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isSlash.md b/src/bdscript/isSlash.md index 3f7ae948ca8..2572c21c29e 100644 --- a/src/bdscript/isSlash.md +++ b/src/bdscript/isSlash.md @@ -1,7 +1,9 @@ # $isSlash Returns whether the command was ran as a slash command or not. -> "true" means the command was ran as a slash command, "false" means it wasn't. +```admonish info +"true" means the command was ran as a slash command, "false" means it wasn't. +``` ## Syntax ``` From 470725bc2c92101c392c3495bf5531593390195c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:07:22 +0300 Subject: [PATCH 0494/1179] Update isNumber.md --- src/bdscript/isNumber.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/isNumber.md b/src/bdscript/isNumber.md index 43fea0c94f6..aead1765c3d 100644 --- a/src/bdscript/isNumber.md +++ b/src/bdscript/isNumber.md @@ -1,7 +1,7 @@ # $isNumber Returns whether the provided value is a number or not. -```admonish tip +```admonish info `true` means the value is a number, `false` means it isn’t. ``` From 73f34ba53c5170a16de8e169f4bfde1b57a06bdc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:07:54 +0300 Subject: [PATCH 0495/1179] Update isNSFW.md --- src/bdscript/isNSFW.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/isNSFW.md b/src/bdscript/isNSFW.md index 3e127d1c52b..f25c371b078 100644 --- a/src/bdscript/isNSFW.md +++ b/src/bdscript/isNSFW.md @@ -1,7 +1,9 @@ # $isNSFW Returns whether the provided channel is NSFW (Not Safe For Work) or not. - -> "true" means the channel is NSFW, "false" means it isn't. + +```admonish info +"true" means the channel is NSFW, "false" means it isn't. +``` ## Syntax ``` From b77cb15b0b9c86aad6ac4c10b773edc13e4f198f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:08:39 +0300 Subject: [PATCH 0496/1179] Update isMentionable.md --- src/bdscript/isMentionable.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isMentionable.md b/src/bdscript/isMentionable.md index 200bcd8af14..4c3fe49d350 100644 --- a/src/bdscript/isMentionable.md +++ b/src/bdscript/isMentionable.md @@ -1,7 +1,9 @@ # $isMentionable Returns whether a role is mentionable by everyone or not. -> "true" means the role is mentionable, "false" means it isn't. +```admonish info +"true" means the role is mentionable, "false" means it isn't. +``` ![example](https://user-images.githubusercontent.com/69215413/123517230-e5327280-d66d-11eb-8337-35dac5f276e7.png) From 462151b4897f247e2a6acd624170f38700178e49 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:09:00 +0300 Subject: [PATCH 0497/1179] Update isInteger.md --- src/bdscript/isInteger.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/isInteger.md b/src/bdscript/isInteger.md index b07cd09262f..6fe3a76091e 100644 --- a/src/bdscript/isInteger.md +++ b/src/bdscript/isInteger.md @@ -1,7 +1,7 @@ # $isInteger Checks if the specified value is an integer or not. -```admonish note +```admonish info `true` means the value is an integer, `false` means it isn’t. ``` From ba2490a8a0e0d459e5c46571a26eee28ddb42c6b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:11:16 +0300 Subject: [PATCH 0498/1179] Update isHoisted.md --- src/bdscript/isHoisted.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isHoisted.md b/src/bdscript/isHoisted.md index dc0138a7f05..3675ff866cc 100644 --- a/src/bdscript/isHoisted.md +++ b/src/bdscript/isHoisted.md @@ -1,7 +1,9 @@ # $isHoisted Returns whether a role is displayed separately or not. -> "true" means the role is hoisted, "false" means it isn't. +```admonish info +"true" means the role is hoisted, "false" means it isn't. +``` ## Syntax ``` From 0addb62890d762a7f7afd2a705c0fa29bc5bb4ca Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:11:47 +0300 Subject: [PATCH 0499/1179] Update isBot.md --- src/bdscript/isBot.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isBot.md b/src/bdscript/isBot.md index a07f6e12d16..dd9603ec495 100644 --- a/src/bdscript/isBot.md +++ b/src/bdscript/isBot.md @@ -1,7 +1,9 @@ # $isBot Returns whether the provided user is a bot or not. -> "true" means the user is a bot, "false" means they aren't. +```admonish info +"true" means the user is a bot, "false" means they aren't. +``` ## Syntax ``` From 470f4aaf46f6dba3c9e9f38772ef359e7ef9209f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:13:15 +0300 Subject: [PATCH 0500/1179] Update isBooster.md --- src/bdscript/isBooster.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/bdscript/isBooster.md b/src/bdscript/isBooster.md index c3cf0108174..9bade6e873a 100644 --- a/src/bdscript/isBooster.md +++ b/src/bdscript/isBooster.md @@ -1,7 +1,9 @@ # $isBooster Returns if user is boosting guild with nitro. -> "true" means the user is a booster, "false" means it isn't. +```admonish info +"true" means the user is a booster, "false" means it isn't. +``` ## Syntax ``` @@ -30,6 +32,9 @@ Booster? $isBooster[$mentioned[1]] content: | Booster? true ``` - -> You can use `$isBooster[]` to get the status of author.\ + +```admonish tip +You can use empty `$isBooster[]` to get the information about author.\ +``` + > [How `$mentioned[]` works?](./mentioned.md) From 4a739c856574bf0d72ca473c72675d6ec06dbcb9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:14:35 +0300 Subject: [PATCH 0501/1179] Update isBooster.md --- src/bdscript/isBooster.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isBooster.md b/src/bdscript/isBooster.md index 9bade6e873a..2751a327bb8 100644 --- a/src/bdscript/isBooster.md +++ b/src/bdscript/isBooster.md @@ -37,4 +37,6 @@ Booster? $isBooster[$mentioned[1]] You can use empty `$isBooster[]` to get the information about author.\ ``` -> [How `$mentioned[]` works?](./mentioned.md) +```admonish question title="What is this?" +How [`$mentioned[]`](./mentioned.md) works? +``` From 3c03cfc534f37d7ef207d5e9cfb9e01210734ded Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:14:59 +0300 Subject: [PATCH 0502/1179] Update isBoolean.md --- src/bdscript/isBoolean.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/isBoolean.md b/src/bdscript/isBoolean.md index 8d8a75bf48b..89cc9b11211 100644 --- a/src/bdscript/isBoolean.md +++ b/src/bdscript/isBoolean.md @@ -1,7 +1,7 @@ # $isBoolean Returns whether the provided text is a boolean or not. -```admonish note +```admonish info `true` means the text is a boolean, `false` means it isn’t. ``` From 760fd033729c46bc34fc71e7d2f266a2407d81b3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:16:06 +0300 Subject: [PATCH 0503/1179] Update isBanned.md --- src/bdscript/isBanned.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isBanned.md b/src/bdscript/isBanned.md index 546b99132c7..2b4d2e0d44e 100644 --- a/src/bdscript/isBanned.md +++ b/src/bdscript/isBanned.md @@ -1,7 +1,9 @@ # $isBanned Returns whether a user is banned from the current server or not. Requires the `BAN_MEMBERS` permission. -> "true" means the user is banned, "false" means they aren't. +```admonish info +`true` means the user is banned, `false` means he isn't. +``` ## Syntax ``` From 7cfa87923d08801eb62897b8777393c36dacc227 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:16:50 +0300 Subject: [PATCH 0504/1179] Update isAdmin.md --- src/bdscript/isAdmin.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isAdmin.md b/src/bdscript/isAdmin.md index f79e0658aaa..e50adecae14 100644 --- a/src/bdscript/isAdmin.md +++ b/src/bdscript/isAdmin.md @@ -1,7 +1,9 @@ # $isAdmin Returns whether the provided user has the administrator permission or not. -> "true" means the user has the administrator permission, "false" means they don't. +```admonish info +`true` means the user has the administrator permission, `false` means they don't. +``` ## Syntax ``` From b3f65f6898017a7076652a307bb9da80da81f5d3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:17:09 +0300 Subject: [PATCH 0505/1179] Update isBanned.md --- src/bdscript/isBanned.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/isBanned.md b/src/bdscript/isBanned.md index 2b4d2e0d44e..028980c4991 100644 --- a/src/bdscript/isBanned.md +++ b/src/bdscript/isBanned.md @@ -2,7 +2,7 @@ Returns whether a user is banned from the current server or not. Requires the `BAN_MEMBERS` permission. ```admonish info -`true` means the user is banned, `false` means he isn't. +`true` means the user is banned, `false` means they aren't. ``` ## Syntax From 03798f20626e296df7628a9a69fe08cb8ad76cb4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:18:11 +0300 Subject: [PATCH 0506/1179] Update hour.md --- src/bdscript/hour.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/hour.md b/src/bdscript/hour.md index ecf7b8a3bdd..6693942371a 100644 --- a/src/bdscript/hour.md +++ b/src/bdscript/hour.md @@ -1,7 +1,9 @@ # $hour Returns the current hour. -> The `$hour` function uses the twenty-four-hour clock instead of two groups of twelve hours; this is also known as "Military Time". +```admonish note +The `$hour` function uses the twenty-four-hour clock instead of two groups of twelve hours; this is also known as "Military Time". +``` ## Syntax ``` From 099376e44d7590156cc4c0ea7d435a15fcb34157 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:19:09 +0300 Subject: [PATCH 0507/1179] Update hasRole.md --- src/bdscript/hasRole.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/hasRole.md b/src/bdscript/hasRole.md index 901d1fe5069..7bf0d41b29b 100644 --- a/src/bdscript/hasRole.md +++ b/src/bdscript/hasRole.md @@ -1,7 +1,9 @@ # $hasRole Returns whether or not a user has the provided role. -> "true" means the user has the role, "false" means they don't. +```admonish info +`true` means the user has the role, `false` means they don't. +``` ## Syntax ``` From 039311dc9a63b83898771e1928e9567601aad378 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:19:54 +0300 Subject: [PATCH 0508/1179] Update guildExists.md --- src/bdscript/guildExists.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/guildExists.md b/src/bdscript/guildExists.md index ade0727acb6..e9605f79ad0 100644 --- a/src/bdscript/guildExists.md +++ b/src/bdscript/guildExists.md @@ -1,7 +1,9 @@ # $guildExists Checks if the provided guild/server exists. -> Returns `true` if the server exists. Returns `false` if the server doesn't exist or the bot isn't present in the provided server. +```admonish info +Returns `true` if the server exists. Returns `false` if the server doesn't exist or the bot isn't present in the provided server. +``` ## Syntax ``` From f9e0ce8ec35cd0bfe885c670372bf835515dbd70 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:20:07 +0300 Subject: [PATCH 0509/1179] Update guildExists.md --- src/bdscript/guildExists.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/guildExists.md b/src/bdscript/guildExists.md index e9605f79ad0..9b476baeb66 100644 --- a/src/bdscript/guildExists.md +++ b/src/bdscript/guildExists.md @@ -16,7 +16,7 @@ $guildExists[Guild ID] ## Example ``` $nomention -$guildExists[$message[1]] +$guildExists[$message] ``` ``` discord yaml From 41dcba646e394c07137a4b72ef2488572a19a0d8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:34:39 +0300 Subject: [PATCH 0510/1179] Update color.md --- src/tools/color.md | 66 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 1db922c987a..6dd10fcb304 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -1 +1,65 @@ -# Color hex \ No newline at end of file +# Color hex + + + +
+ + + +
+ +
+
+
\ No newline at end of file From a1e35d189e07535e6c86053c7369cf079b2fc8d7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:35:11 +0300 Subject: [PATCH 0511/1179] Update playground.js --- src/theme/playground.js | 45 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 878e8b3442d..c871a75b136 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -982,4 +982,47 @@ document.addEventListener('DOMContentLoaded', function() { - +// Color + +function initColorPicker() { + const colorPicker = document.getElementById('colorPicker'); + const openBtn = document.getElementById('openPicker'); + const hexInput = document.getElementById('hexInput'); + const preview = document.getElementById('colorPreview'); + + openBtn.onclick = function() { + colorPicker.click(); + }; + + colorPicker.oninput = function() { + const color = this.value; + hexInput.value = color; + preview.style.backgroundColor = color; + }; + + hexInput.oninput = function() { + let val = this.value; + if (val && val[0] !== '#') { + val = '#' + val; + } + if (/^#[0-9A-Fa-f]{6}$/.test(val) || /^#[0-9A-Fa-f]{3}$/.test(val)) { + preview.style.backgroundColor = val; + colorPicker.value = val.length === 4 ? expandHex(val) : val; + } + }; + + preview.onclick = function() { + colorPicker.click(); + }; + + function expandHex(short) { + if (short.length === 4 && short[0] === '#') { + return '#' + short[1] + short[1] + short[2] + short[2] + short[3] + short[3]; + } + return short; + } + + preview.style.backgroundColor = hexInput.value || '#000000'; +} + +window.onload = initColorPicker; From 28f06d8aac663853d60ff9c758e40b0217d904b5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:45:32 +0300 Subject: [PATCH 0512/1179] Update color.md --- src/tools/color.md | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 6dd10fcb304..00718ea49ac 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -8,32 +8,19 @@ border-radius: 10px; font-family: sans-serif; } -.color-btn { - width: 100%; - padding: 12px; - background: #6c757d; - color: white; - border: none; - border-radius: 6px; - cursor: pointer; - font-size: 16px; - margin-bottom: 15px; - transition: background 0.3s; -} -.color-btn:hover { - background: #5a6268; -} .color-input { - display: none; width: 100%; - height: 40px; + height: 50px; cursor: pointer; border: none; outline: none; + padding: 0; + margin-bottom: 15px; } .input-group { display: flex; align-items: center; + margin-bottom: 5px; } input[type="text"] { flex: 1; @@ -50,16 +37,21 @@ input[type="text"] { border-left: none; border-radius: 0 6px 6px 0; background: #ffffff; - cursor: pointer; +} +.error { + color: #dc3545; + font-size: 12px; + min-height: 16px; + margin-top: 2px; }
- - +
+
\ No newline at end of file From b69fd50326e8e4b0d299aaa1d5966119bf18cd44 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:46:05 +0300 Subject: [PATCH 0513/1179] Update playground.js --- src/theme/playground.js | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index c871a75b136..0aac8cf741e 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -986,35 +986,43 @@ document.addEventListener('DOMContentLoaded', function() { function initColorPicker() { const colorPicker = document.getElementById('colorPicker'); - const openBtn = document.getElementById('openPicker'); const hexInput = document.getElementById('hexInput'); const preview = document.getElementById('colorPreview'); - - openBtn.onclick = function() { - colorPicker.click(); - }; + const errorText = document.getElementById('errorText'); colorPicker.oninput = function() { const color = this.value; hexInput.value = color; preview.style.backgroundColor = color; + errorText.textContent = ''; }; hexInput.oninput = function() { - let val = this.value; - if (val && val[0] !== '#') { + let val = this.value.trim(); + + if (val === '') { + preview.style.backgroundColor = '#ffffff'; + errorText.textContent = ''; + return; + } + + if (val[0] !== '#') { val = '#' + val; + this.value = val; } - if (/^#[0-9A-Fa-f]{6}$/.test(val) || /^#[0-9A-Fa-f]{3}$/.test(val)) { + + const isValid = /^#[0-9A-Fa-f]{6}$/.test(val) || /^#[0-9A-Fa-f]{3}$/.test(val); + + if (isValid) { preview.style.backgroundColor = val; colorPicker.value = val.length === 4 ? expandHex(val) : val; + errorText.textContent = ''; + } else { + preview.style.backgroundColor = '#ffffff'; + errorText.textContent = 'Неверный формат цвета'; } }; - preview.onclick = function() { - colorPicker.click(); - }; - function expandHex(short) { if (short.length === 4 && short[0] === '#') { return '#' + short[1] + short[1] + short[2] + short[2] + short[3] + short[3]; @@ -1022,7 +1030,8 @@ function initColorPicker() { return short; } - preview.style.backgroundColor = hexInput.value || '#000000'; + hexInput.value = colorPicker.value; + preview.style.backgroundColor = colorPicker.value; } -window.onload = initColorPicker; +window.onload = initColorPicker; \ No newline at end of file From 02f80ce3d048eeb2a042388b566d92b34895be4c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:48:18 +0300 Subject: [PATCH 0514/1179] Update color.md --- src/tools/color.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 00718ea49ac..9e8b6b2a3f6 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -47,10 +47,10 @@ input[type="text"] {
- +
- +
From 20faeab05c17256884f992d1e08f4305d6e136b3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:48:56 +0300 Subject: [PATCH 0515/1179] Update playground.js --- src/theme/playground.js | 85 ++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 0aac8cf741e..8f27bcd2738 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -984,54 +984,61 @@ document.addEventListener('DOMContentLoaded', function() { // Color -function initColorPicker() { +function colorPickerChange() { const colorPicker = document.getElementById('colorPicker'); const hexInput = document.getElementById('hexInput'); const preview = document.getElementById('colorPreview'); const errorText = document.getElementById('errorText'); - colorPicker.oninput = function() { - const color = this.value; - hexInput.value = color; - preview.style.backgroundColor = color; + const color = colorPicker.value; + hexInput.value = color; + preview.style.backgroundColor = color; + errorText.textContent = ''; +} + +function hexInputChange() { + const colorPicker = document.getElementById('colorPicker'); + const hexInput = document.getElementById('hexInput'); + const preview = document.getElementById('colorPreview'); + const errorText = document.getElementById('errorText'); + + let val = hexInput.value.trim(); + + if (val === '') { + preview.style.backgroundColor = '#ffffff'; errorText.textContent = ''; - }; + return; + } - hexInput.oninput = function() { - let val = this.value.trim(); - - if (val === '') { - preview.style.backgroundColor = '#ffffff'; - errorText.textContent = ''; - return; - } - - if (val[0] !== '#') { - val = '#' + val; - this.value = val; - } - - const isValid = /^#[0-9A-Fa-f]{6}$/.test(val) || /^#[0-9A-Fa-f]{3}$/.test(val); - - if (isValid) { - preview.style.backgroundColor = val; - colorPicker.value = val.length === 4 ? expandHex(val) : val; - errorText.textContent = ''; - } else { - preview.style.backgroundColor = '#ffffff'; - errorText.textContent = 'Неверный формат цвета'; - } - }; + if (val[0] !== '#') { + val = '#' + val; + hexInput.value = val; + } - function expandHex(short) { - if (short.length === 4 && short[0] === '#') { - return '#' + short[1] + short[1] + short[2] + short[2] + short[3] + short[3]; - } - return short; + const isValid = /^#[0-9A-Fa-f]{6}$/.test(val) || /^#[0-9A-Fa-f]{3}$/.test(val); + + if (isValid) { + preview.style.backgroundColor = val; + colorPicker.value = val.length === 4 ? expandHex(val) : val; + errorText.textContent = ''; + } else { + preview.style.backgroundColor = '#ffffff'; + errorText.textContent = 'Неверный формат цвета'; + } +} + +function expandHex(short) { + if (short.length === 4 && short[0] === '#') { + return '#' + short[1] + short[1] + short[2] + short[2] + short[3] + short[3]; } + return short; +} + +window.onload = function() { + const colorPicker = document.getElementById('colorPicker'); + const hexInput = document.getElementById('hexInput'); + const preview = document.getElementById('colorPreview'); hexInput.value = colorPicker.value; preview.style.backgroundColor = colorPicker.value; -} - -window.onload = initColorPicker; \ No newline at end of file +}; \ No newline at end of file From 3379960219f463ff84abcd3f934bcdd40ea4538e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:52:45 +0300 Subject: [PATCH 0516/1179] Update timestamp.md --- src/tools/timestamp.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 274f7ab9eb8..fed22924f0b 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -66,6 +66,10 @@ } +```admonish info +The timezone selected on your device is used. +``` +

Date to Unix Time

Date

From 85afc561b78a112095b1eccd484639edce89a009 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:55:15 +0300 Subject: [PATCH 0517/1179] Update timestamp.md --- src/tools/timestamp.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index fed22924f0b..9c994e621cb 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -57,6 +57,13 @@ color: #7f8c8d; margin-top: 5px; } + button { + touch-action: manipulation; + } + + button:not(#menu-bar i, #menu-bar .icon-button) { + background: hsl(0deg 0% 100% / 7%); + } .current-time { text-align: center; padding: 10px; From 06abf6568b567f369e07ab5675793a5a51c173db Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:56:07 +0300 Subject: [PATCH 0518/1179] Update playground.js --- src/theme/playground.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 8f27bcd2738..9d13f80cc0c 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -934,10 +934,6 @@ setInterval(updateCurrentTime, 1000); document.addEventListener('DOMContentLoaded', function() { const quickButtons = document.createElement('div'); - quickButtons.style.marginTop = '10px'; - quickButtons.style.display = 'flex'; - quickButtons.style.gap = '10px'; - quickButtons.style.flexWrap = 'wrap'; const times = [ {label: 'Now', seconds: 0}, From 8392ca9d41a1a5552837593be8288843995180dd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:59:47 +0300 Subject: [PATCH 0519/1179] Update timestamp.md --- src/tools/timestamp.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 9c994e621cb..103d8eb8d33 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -63,6 +63,21 @@ button:not(#menu-bar i, #menu-bar .icon-button) { background: hsl(0deg 0% 100% / 7%); + -webkit-user-select: none; + user-select: none; + touch-action: manipulation; + padding-left: 1rem; + padding-right: 1rem; + height: 4rem; + border: none; + border-radius: 10px; + cursor: pointer; + font-size: 1.5rem; + margin: 0.25%; + margin-top: 3%; + color: #fff; + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); + transition: 0.2s; } .current-time { text-align: center; From 2774bf243578a72341d048feb2c8a0cc7543acdb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 17:07:36 +0300 Subject: [PATCH 0520/1179] Update color.md --- src/tools/color.md | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 9e8b6b2a3f6..ef7807cb400 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -8,35 +8,27 @@ border-radius: 10px; font-family: sans-serif; } -.color-input { - width: 100%; - height: 50px; - cursor: pointer; - border: none; - outline: none; - padding: 0; - margin-bottom: 15px; -} -.input-group { +.input-row { display: flex; + gap: 10px; align-items: center; margin-bottom: 5px; } -input[type="text"] { +.hex-input { flex: 1; padding: 10px; border: 1px solid #ced4da; - border-radius: 6px 0 0 6px; + border-radius: 6px; font-family: monospace; font-size: 14px; } -.preview { - width: 48px; +.color-input { + width: 50px; height: 40px; + cursor: pointer; border: 1px solid #ced4da; - border-left: none; - border-radius: 0 6px 6px 0; - background: #ffffff; + border-radius: 6px; + padding: 0; } .error { color: #dc3545; @@ -47,11 +39,9 @@ input[type="text"] {
- - -
- -
+
+ +
\ No newline at end of file From dc49fcfb7943d369199279149eaf103a4a508332 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 17:08:25 +0300 Subject: [PATCH 0521/1179] Update playground.js --- src/theme/playground.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 9d13f80cc0c..a9564c77ad4 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -983,25 +983,21 @@ document.addEventListener('DOMContentLoaded', function() { function colorPickerChange() { const colorPicker = document.getElementById('colorPicker'); const hexInput = document.getElementById('hexInput'); - const preview = document.getElementById('colorPreview'); const errorText = document.getElementById('errorText'); const color = colorPicker.value; hexInput.value = color; - preview.style.backgroundColor = color; errorText.textContent = ''; } function hexInputChange() { const colorPicker = document.getElementById('colorPicker'); const hexInput = document.getElementById('hexInput'); - const preview = document.getElementById('colorPreview'); const errorText = document.getElementById('errorText'); let val = hexInput.value.trim(); if (val === '') { - preview.style.backgroundColor = '#ffffff'; errorText.textContent = ''; return; } @@ -1014,11 +1010,9 @@ function hexInputChange() { const isValid = /^#[0-9A-Fa-f]{6}$/.test(val) || /^#[0-9A-Fa-f]{3}$/.test(val); if (isValid) { - preview.style.backgroundColor = val; colorPicker.value = val.length === 4 ? expandHex(val) : val; errorText.textContent = ''; } else { - preview.style.backgroundColor = '#ffffff'; errorText.textContent = 'Неверный формат цвета'; } } @@ -1033,8 +1027,6 @@ function expandHex(short) { window.onload = function() { const colorPicker = document.getElementById('colorPicker'); const hexInput = document.getElementById('hexInput'); - const preview = document.getElementById('colorPreview'); hexInput.value = colorPicker.value; - preview.style.backgroundColor = colorPicker.value; }; \ No newline at end of file From 5b26867b914e5fa7ccf9487c6a3d6b3a5a167c70 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 17:13:29 +0300 Subject: [PATCH 0522/1179] Update color.md --- src/tools/color.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index ef7807cb400..8d330cbe433 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -2,11 +2,15 @@
+

Color Picker

From 7a3b23fc6edc32c027c25b0cc8289a12bda7bb76 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 17:16:52 +0300 Subject: [PATCH 0524/1179] Update color.md --- src/tools/color.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tools/color.md b/src/tools/color.md index 8dfb1cb552e..f8444fca69e 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -12,6 +12,10 @@ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); transition: 0.3s; } +.picker-container h2 { + margin-top: 60px; + padding-top: 15px; +} .input-row { display: flex; gap: 10px; From 7eff779c271cad66221f84873dbf1961ccc0ebef Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:18:46 +0300 Subject: [PATCH 0525/1179] Update playground.js --- src/theme/playground.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index a9564c77ad4..3d048927d8f 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1004,16 +1004,17 @@ function hexInputChange() { if (val[0] !== '#') { val = '#' + val; - hexInput.value = val; } const isValid = /^#[0-9A-Fa-f]{6}$/.test(val) || /^#[0-9A-Fa-f]{3}$/.test(val); if (isValid) { - colorPicker.value = val.length === 4 ? expandHex(val) : val; + const finalColor = val.length === 4 ? expandHex(val) : val; + colorPicker.value = finalColor; + hexInput.value = finalColor; errorText.textContent = ''; } else { - errorText.textContent = 'Неверный формат цвета'; + errorText.textContent = 'Invalid color'; } } @@ -1029,4 +1030,7 @@ window.onload = function() { const hexInput = document.getElementById('hexInput'); hexInput.value = colorPicker.value; + + colorPicker.setAttribute('oninput', 'colorPickerChange()'); + hexInput.setAttribute('oninput', 'hexInputChange()'); }; \ No newline at end of file From a46d0dcf3438c7ba2452938dea43556f2367dfee Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:20:23 +0300 Subject: [PATCH 0526/1179] Update color.md --- src/tools/color.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index f8444fca69e..1f457092cab 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -44,10 +44,15 @@ min-height: 16px; margin-top: 2px; } +.hex-input:invalid { + border-color: #dc3545; +} +.hex-input:valid { + border-color: #28a745; +}
-

Color Picker

From 8cc4db78d277e0e86712f6b4c4f8849bd8d8749f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:23:11 +0300 Subject: [PATCH 0527/1179] Update color.md --- src/tools/color.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 1f457092cab..e8e258b766f 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -31,12 +31,15 @@ font-size: 14px; } .color-input { - width: 50px; - height: 40px; - cursor: pointer; - border: 1px solid #ced4da; - border-radius: 6px; - padding: 0; + background: hsl(0deg 0% 100% / 7%); + color: #bbb; + font-size: 1.5rem; + display: block; + outline: none; + border-radius: 10px; + border-width: 0; + width: 70%; + height: 7rem; } .error { color: #dc3545; From a4dfa624eb9b7404c5e5562b4791251fa0f756de Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:23:53 +0300 Subject: [PATCH 0528/1179] Update color.md --- src/tools/color.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/color.md b/src/tools/color.md index e8e258b766f..ef9f5b2335d 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -56,6 +56,7 @@
+

Color Picker

From a436adac2c77d0305af3530774c5b9310beae4c3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:29:44 +0300 Subject: [PATCH 0529/1179] Update color.md --- src/tools/color.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index ef9f5b2335d..b2c043aec4b 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -25,10 +25,13 @@ .hex-input { flex: 1; padding: 10px; - border: 1px solid #ced4da; - border-radius: 6px; + background: hsl(0deg 0% 100% / 7%); + border-radius: 10px; + border-width: 0; + border-radius: 10px; font-family: monospace; font-size: 14px; + height: 5rem; } .color-input { background: hsl(0deg 0% 100% / 7%); @@ -38,8 +41,8 @@ outline: none; border-radius: 10px; border-width: 0; - width: 70%; - height: 7rem; + width: 10%; + height: 5rem; } .error { color: #dc3545; From a8236693e9f2a56a4602564e7a0ffeba021d883c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:31:55 +0300 Subject: [PATCH 0530/1179] Update color.md --- src/tools/color.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index b2c043aec4b..782b3bb4ae1 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -31,7 +31,7 @@ border-radius: 10px; font-family: monospace; font-size: 14px; - height: 5rem; + height: 3.5rem; } .color-input { background: hsl(0deg 0% 100% / 7%); @@ -42,7 +42,7 @@ border-radius: 10px; border-width: 0; width: 10%; - height: 5rem; + height: 4rem; } .error { color: #dc3545; From f0a911abcf2ab773cc23084c74ee4c6d75e67969 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:33:16 +0300 Subject: [PATCH 0531/1179] Update color.md --- src/tools/color.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 782b3bb4ae1..67ed4f3e4c6 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -59,10 +59,9 @@
-

Color Picker

- - + +
\ No newline at end of file From 0b4bf32d032801969e089ecf8f0fef1ccd080f39 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:33:29 +0300 Subject: [PATCH 0532/1179] Update color.md --- src/tools/color.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 67ed4f3e4c6..699eec0dc22 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -50,12 +50,6 @@ min-height: 16px; margin-top: 2px; } -.hex-input:invalid { - border-color: #dc3545; -} -.hex-input:valid { - border-color: #28a745; -}
From 82bb0de2ec1199b4d4daa5483138ff4dc46d0533 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:34:22 +0300 Subject: [PATCH 0533/1179] Update playground.js --- src/theme/playground.js | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 3d048927d8f..6196109eed8 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1004,6 +1004,7 @@ function hexInputChange() { if (val[0] !== '#') { val = '#' + val; + hexInput.value = val; } const isValid = /^#[0-9A-Fa-f]{6}$/.test(val) || /^#[0-9A-Fa-f]{3}$/.test(val); @@ -1011,7 +1012,6 @@ function hexInputChange() { if (isValid) { const finalColor = val.length === 4 ? expandHex(val) : val; colorPicker.value = finalColor; - hexInput.value = finalColor; errorText.textContent = ''; } else { errorText.textContent = 'Invalid color'; @@ -1023,14 +1023,4 @@ function expandHex(short) { return '#' + short[1] + short[1] + short[2] + short[2] + short[3] + short[3]; } return short; -} - -window.onload = function() { - const colorPicker = document.getElementById('colorPicker'); - const hexInput = document.getElementById('hexInput'); - - hexInput.value = colorPicker.value; - - colorPicker.setAttribute('oninput', 'colorPickerChange()'); - hexInput.setAttribute('oninput', 'hexInputChange()'); -}; \ No newline at end of file +} \ No newline at end of file From a8118c3d15eb471bfbbda033a793857a8f4c465d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:36:06 +0300 Subject: [PATCH 0534/1179] Update color.md --- src/tools/color.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 699eec0dc22..c5bc03e4879 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -31,7 +31,7 @@ border-radius: 10px; font-family: monospace; font-size: 14px; - height: 3.5rem; + height: 4rem; } .color-input { background: hsl(0deg 0% 100% / 7%); @@ -42,7 +42,8 @@ border-radius: 10px; border-width: 0; width: 10%; - height: 4rem; + height: 3.5rem; + padding: 0; } .error { color: #dc3545; @@ -53,6 +54,7 @@
+

Color picker

From c0bf45aef3b512780f62527d0d087d7cb110c2c0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:36:42 +0300 Subject: [PATCH 0535/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index c5bc03e4879..53cc446114f 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -32,6 +32,7 @@ font-family: monospace; font-size: 14px; height: 4rem; + width: 80%; } .color-input { background: hsl(0deg 0% 100% / 7%); @@ -41,7 +42,6 @@ outline: none; border-radius: 10px; border-width: 0; - width: 10%; height: 3.5rem; padding: 0; } From ce399fea9fdda109d822175928706fc1e331450b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:38:16 +0300 Subject: [PATCH 0536/1179] Update color.md --- src/tools/color.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 53cc446114f..f9ef1e48089 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -31,7 +31,7 @@ border-radius: 10px; font-family: monospace; font-size: 14px; - height: 4rem; + height: 3.5rem; width: 80%; } .color-input { @@ -42,7 +42,7 @@ outline: none; border-radius: 10px; border-width: 0; - height: 3.5rem; + height: 4rem; padding: 0; } .error { From 832cd32b9d9eaecab6c450f24b4cdafdd307ea1f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:39:42 +0300 Subject: [PATCH 0537/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index f9ef1e48089..dd3296b736e 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -24,6 +24,7 @@ } .hex-input { flex: 1; + color: #bbb; padding: 10px; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; @@ -36,7 +37,6 @@ } .color-input { background: hsl(0deg 0% 100% / 7%); - color: #bbb; font-size: 1.5rem; display: block; outline: none; From 2656f39c19f4f9f782222a6aba9aa86dee398beb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:42:42 +0300 Subject: [PATCH 0538/1179] Update color.md --- src/tools/color.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/color.md b/src/tools/color.md index dd3296b736e..9dfa2acacb7 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -55,6 +55,7 @@

Color picker

+

Select a color in hex format

From b5a1ff2a4ebfe3ad24527420a241eab395cc8b57 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:43:01 +0300 Subject: [PATCH 0539/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 9dfa2acacb7..52f3068ec0c 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -1,4 +1,4 @@ -# Color hex +# Color +Here you can choose a color to use in your command. +

Color picker

Select a color in hex format

From 3afe9a808faa5ed512291d013954455c96a6c2ae Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:54:36 +0300 Subject: [PATCH 0548/1179] Update color.md --- src/tools/color.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 66d17f9c0b6..116c0cf9887 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -32,8 +32,8 @@ border-radius: 10px; font-family: monospace; font-size: 14px; - height: 3.5rem; - width: 70%; + height: 3rem; + width: 65%; outline: none; touch-action: manipulation; -webkit-user-select: none; @@ -46,9 +46,9 @@ outline: none; border-radius: 10px; border-width: 0; - height: 5rem; + height: 5.5rem; padding: 0; - width: 5rem; + width: 5.5rem; touch-action: manipulation; -webkit-user-select: none; user-select: none; @@ -74,6 +74,7 @@ Here you can choose a color to use in your command.
### Functions +Here are all the functions related to hex colors. - **SET**: - `$color[]` - `$sendEmbedMessage[]` @@ -81,7 +82,7 @@ Here you can choose a color to use in your command. - `$colorRole[]` - `$editEmbedIn[]` - `$modifyRole[]` -- `$createRole[] +- `$createRole[]` - `$editMessage[]` - `$embedSuppressErrors[]` - **GET**: From 52c5d6ea4c2f8f588a896d9deec764e28ef29bb8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:56:02 +0300 Subject: [PATCH 0549/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 116c0cf9887..589ed3c2a62 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -5,7 +5,7 @@ position: relative; background-color: var(--color3); border-radius: 10px; - margin-top: -6%; + margin-top: -10%; padding-bottom: 1.5rem; padding-left: 15px; padding-right: 15px; From 2ab0ea706b9aaa7783831e0f73085b85ea50af0e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:59:03 +0300 Subject: [PATCH 0550/1179] Update color.md --- src/tools/color.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 589ed3c2a62..e9aac044ac9 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -76,18 +76,18 @@ Here you can choose a color to use in your command. ### Functions Here are all the functions related to hex colors. - **SET**: -- `$color[]` -- `$sendEmbedMessage[]` -- `$addContainer[]` -- `$colorRole[]` -- `$editEmbedIn[]` -- `$modifyRole[]` -- `$createRole[]` -- `$editMessage[]` -- `$embedSuppressErrors[]` +- [`$color[]`](../bdscript/color.md) +- [`$sendEmbedMessage[]`](../bdscript/sendEmbedMessage.md) +- [`$addContainer[]`](../bdscript/addContainer.md) +- [`$colorRole[]`](../bdscript/colorRole.md) +- [`$editEmbedIn[]`](../bdscript/editEmbedIn.md) +- [`$modifyRole[]`](../bdscript/modifyRole.md) +- [`$createRole[]`](../bdscript/createRole.md) +- [`$editMessage[]`](../bdscript/editMessage.md) +- [`$embedSuppressErrors[]`](../bdscript/embedSuppressErrors.md) - **GET**: -- `$getRoleColor[]` -- `$roleInfo[]` -- `$userBannerColor[]` +- [`$getRoleColor[]`](../bdscript/getRoleColor.md) +- [`$roleInfo[]`](../bdscript/roleInfo.md) +- [`$userBannerColor[]`](../bdscript/userBannerColor.md) - **CHECK**: -- `$isValidHex[]` \ No newline at end of file +- [`$isValidHex[]`](../bdscript/isValidHex.md) \ No newline at end of file From b08372459f456fa84144f6a1d8e237dc5afd4e8b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:59:35 +0300 Subject: [PATCH 0551/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index e9aac044ac9..c0f46ac62b7 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -6,7 +6,7 @@ background-color: var(--color3); border-radius: 10px; margin-top: -10%; - padding-bottom: 1.5rem; + padding-bottom: 0.5rem; padding-left: 15px; padding-right: 15px; box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); From 8e6b2b0f3cd16666b9e79c3ad179968a320d50bf Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:00:35 +0300 Subject: [PATCH 0552/1179] Update color.md --- src/tools/color.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/tools/color.md b/src/tools/color.md index c0f46ac62b7..01e8527771f 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -12,6 +12,11 @@ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); transition: 0.3s; } +.picker-container { + transform: scale(1.015); + border-radius: 12.5px; + transition: 0.3s; +} .picker-container h2 { margin-top: 60px; padding-top: 15px; From 6fad3f38e05705642dec7e2e84148eac59fe3d08 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:00:51 +0300 Subject: [PATCH 0553/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 01e8527771f..982216f2c03 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -12,7 +12,7 @@ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); transition: 0.3s; } -.picker-container { +.picker-container:hover { transform: scale(1.015); border-radius: 12.5px; transition: 0.3s; From 1f16ee3bc619a5e14ace02f81b51d13433a58045 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:01:33 +0300 Subject: [PATCH 0554/1179] Update color.md --- src/tools/color.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tools/color.md b/src/tools/color.md index 982216f2c03..644470ff4f0 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -21,6 +21,9 @@ margin-top: 60px; padding-top: 15px; } +.picker-container p { + margin-top: -15px; +} .input-row { display: flex; gap: 10px; From e2dfd2af468a4bd60a8be4b11adeb42dbc12c51e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:02:17 +0300 Subject: [PATCH 0555/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 644470ff4f0..909af8d6efc 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -73,7 +73,7 @@ Here you can choose a color to use in your command.

Color picker

-

Select a color in hex format

+

Select a color in hex format.

From 767fe303e78ce12366ea47b86c74c7bf6d86dab0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:02:54 +0300 Subject: [PATCH 0556/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 909af8d6efc..b62cb8148a7 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -81,7 +81,7 @@ Here you can choose a color to use in your command.
-### Functions +## Functions Here are all the functions related to hex colors. - **SET**: - [`$color[]`](../bdscript/color.md) From 8c685f563e416ac2224601578839eeebed1b669d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:05:34 +0300 Subject: [PATCH 0557/1179] Update color.md --- src/tools/color.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index b62cb8148a7..374b0358e34 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -83,19 +83,19 @@ Here you can choose a color to use in your command. ## Functions Here are all the functions related to hex colors. -- **SET**: -- [`$color[]`](../bdscript/color.md) -- [`$sendEmbedMessage[]`](../bdscript/sendEmbedMessage.md) +**SET**: - [`$addContainer[]`](../bdscript/addContainer.md) +- [`$color[]`](../bdscript/color.md) - [`$colorRole[]`](../bdscript/colorRole.md) -- [`$editEmbedIn[]`](../bdscript/editEmbedIn.md) -- [`$modifyRole[]`](../bdscript/modifyRole.md) - [`$createRole[]`](../bdscript/createRole.md) +- [`$editEmbedIn[]`](../bdscript/editEmbedIn.md) - [`$editMessage[]`](../bdscript/editMessage.md) - [`$embedSuppressErrors[]`](../bdscript/embedSuppressErrors.md) -- **GET**: +- [`$modifyRole[]`](../bdscript/modifyRole.md) +- [`$sendEmbedMessage[]`](../bdscript/sendEmbedMessage.md) +**GET**: - [`$getRoleColor[]`](../bdscript/getRoleColor.md) - [`$roleInfo[]`](../bdscript/roleInfo.md) - [`$userBannerColor[]`](../bdscript/userBannerColor.md) -- **CHECK**: +**CHECK**: - [`$isValidHex[]`](../bdscript/isValidHex.md) \ No newline at end of file From 5af8bd640cb15c8020a5177d87259657b83bce6c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:06:22 +0300 Subject: [PATCH 0558/1179] Update color.md --- src/tools/color.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 374b0358e34..d1e49138293 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -6,7 +6,6 @@ background-color: var(--color3); border-radius: 10px; margin-top: -10%; - padding-bottom: 0.5rem; padding-left: 15px; padding-right: 15px; box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); @@ -28,7 +27,7 @@ display: flex; gap: 10px; align-items: center; - margin-bottom: 5px; + margin-bottom: 2.5px; } .hex-input { flex: 1; From c9a755e55e86a7561bac93b91d424940ac58b3c5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:08:16 +0300 Subject: [PATCH 0559/1179] Update color.md --- src/tools/color.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index d1e49138293..aacdf271ebb 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -91,10 +91,12 @@ Here are all the functions related to hex colors. - [`$editMessage[]`](../bdscript/editMessage.md) - [`$embedSuppressErrors[]`](../bdscript/embedSuppressErrors.md) - [`$modifyRole[]`](../bdscript/modifyRole.md) -- [`$sendEmbedMessage[]`](../bdscript/sendEmbedMessage.md) +- [`$sendEmbedMessage[]`](../bdscript/sendEmbedMessage.md + **GET**: - [`$getRoleColor[]`](../bdscript/getRoleColor.md) - [`$roleInfo[]`](../bdscript/roleInfo.md) - [`$userBannerColor[]`](../bdscript/userBannerColor.md) + **CHECK**: - [`$isValidHex[]`](../bdscript/isValidHex.md) \ No newline at end of file From cb55bda0112b438f5b141f5c51a9eaf101c301cc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:09:28 +0300 Subject: [PATCH 0560/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index aacdf271ebb..cae044aee6a 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -91,7 +91,7 @@ Here are all the functions related to hex colors. - [`$editMessage[]`](../bdscript/editMessage.md) - [`$embedSuppressErrors[]`](../bdscript/embedSuppressErrors.md) - [`$modifyRole[]`](../bdscript/modifyRole.md) -- [`$sendEmbedMessage[]`](../bdscript/sendEmbedMessage.md +- [`$sendEmbedMessage[]`](../bdscript/sendEmbedMessage.md) **GET**: - [`$getRoleColor[]`](../bdscript/getRoleColor.md) From b219ccfa04fccafbb5355a179c08450b88fa8a79 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:17:40 +0300 Subject: [PATCH 0561/1179] Update color.md --- src/tools/color.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/color.md b/src/tools/color.md index cae044aee6a..0b88d3c771a 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -65,6 +65,7 @@ font-size: 12px; min-height: 16px; margin-top: 2px; + margin-bottom: 2.5px; } From 2d7c371b0fbf89f83801554fa72f562d29a40e44 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:19:05 +0300 Subject: [PATCH 0562/1179] Update color.md --- src/tools/color.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/color.md b/src/tools/color.md index 0b88d3c771a..3d60a94a8d1 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -83,6 +83,7 @@ Here you can choose a color to use in your command. ## Functions Here are all the functions related to hex colors. + **SET**: - [`$addContainer[]`](../bdscript/addContainer.md) - [`$color[]`](../bdscript/color.md) From 16584bd753d848beff5a3f24b1925196e2f8a1e4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:19:17 +0300 Subject: [PATCH 0563/1179] Delete escape.md --- src/tools/escape.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/tools/escape.md diff --git a/src/tools/escape.md b/src/tools/escape.md deleted file mode 100644 index b73cc047de9..00000000000 --- a/src/tools/escape.md +++ /dev/null @@ -1 +0,0 @@ -# Character Escaping \ No newline at end of file From 995f5dbf2ef585391fdc76e5aa15cff5ef1f7f30 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:19:48 +0300 Subject: [PATCH 0564/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index adc091cb9a3..e92c9b2e370 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -44,7 +44,6 @@ - [Tools]() - [Color](./tools/color.md) - - [Character Escaping](./tools/escape.md) - [Code Editor](./tools/editor.md) - [Timestamp Converter](./tools/timestamp.md) From 10d85a8ee99f0d6b9f4238b620cac755446488a7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:09:57 +0300 Subject: [PATCH 0565/1179] Update playground.js --- src/theme/playground.js | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 6196109eed8..7d65601831a 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -940,19 +940,12 @@ document.addEventListener('DOMContentLoaded', function() { {label: '1 hour ago', seconds: -3600}, {label: '1 day ago', seconds: -86400}, {label: '1 week ago', seconds: -604800}, - {label: 'New Year 2024', seconds: 1704067200} + {label: 'New Year 2027', seconds: 1798761600} ]; times.forEach(time => { const button = document.createElement('button'); button.textContent = time.label; - button.style.padding = '8px 12px'; - button.style.border = 'none'; - button.style.borderRadius = '4px'; - button.style.backgroundColor = '#3498db'; - button.style.color = 'white'; - button.style.cursor = 'pointer'; - button.style.fontSize = '14px'; button.onclick = function() { let unixTime; @@ -973,10 +966,7 @@ document.addEventListener('DOMContentLoaded', function() { unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); }); - - - - + // Color From b06624c94868999bf9571166f9f667ce1b198b84 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:23:28 +0300 Subject: [PATCH 0566/1179] Update playground.js --- src/theme/playground.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 7d65601831a..67640ea4b4e 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -934,6 +934,7 @@ setInterval(updateCurrentTime, 1000); document.addEventListener('DOMContentLoaded', function() { const quickButtons = document.createElement('div'); + quickButtons.className = 'time-buttons'; const times = [ {label: 'Now', seconds: 0}, From 49d9d9efb848fc1a2165c80bfff4b781991fa36b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:29:37 +0300 Subject: [PATCH 0567/1179] Update timestamp.md --- src/tools/timestamp.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 103d8eb8d33..82f57c5ae32 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -56,29 +56,32 @@ .timestamp { color: #7f8c8d; margin-top: 5px; - } - button { - touch-action: manipulation; - } - - button:not(#menu-bar i, #menu-bar .icon-button) { - background: hsl(0deg 0% 100% / 7%); - -webkit-user-select: none; - user-select: none; + } + .converter-section button { + outline: none; touch-action: manipulation; + -webkit-user-select: none; + user-select: none; padding-left: 1rem; padding-right: 1rem; height: 4rem; border: none; border-radius: 10px; cursor: pointer; + margin-top: -1rem !important; font-size: 1.5rem; margin: 0.25%; - margin-top: 3%; color: #fff; + background: hsl(0deg 0% 100% / 7%); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); transition: 0.2s; } + .converter-section button:hover { + transform: scale(1.05); + border-radius: 8px; + border-width: 1px; + transition: 0.4s; + } .current-time { text-align: center; padding: 10px; From 9787592fd4355f6935a6467533dfeb0693009e23 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:34:35 +0300 Subject: [PATCH 0568/1179] Update timestamp.md --- src/tools/timestamp.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 82f57c5ae32..f2068a9f2f0 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -56,7 +56,14 @@ .timestamp { color: #7f8c8d; margin-top: 5px; - } + } + .time-buttons, + user-select: none; + -webkit-user-select: none; + display: flex; + justify-content: center; + flex-wrap: wrap; + } .converter-section button { outline: none; touch-action: manipulation; From 6fc969d32a265be57ba4966e8ba4c7439f8719dd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:34:54 +0300 Subject: [PATCH 0569/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index f2068a9f2f0..b28d104b8c9 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -57,7 +57,7 @@ color: #7f8c8d; margin-top: 5px; } - .time-buttons, + .time-buttons { user-select: none; -webkit-user-select: none; display: flex; From 5b1a432d25a2783c80e5960a86ef3449ae27c037 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:37:30 +0300 Subject: [PATCH 0570/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index b28d104b8c9..f17da694096 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -75,7 +75,7 @@ border: none; border-radius: 10px; cursor: pointer; - margin-top: -1rem !important; + margin-top: 0 !important; font-size: 1.5rem; margin: 0.25%; color: #fff; From b81906121f1402fd514c68dacc1e704e6eb5ed90 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:39:22 +0300 Subject: [PATCH 0571/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index f17da694096..7b4ee79fb0d 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -75,7 +75,7 @@ border: none; border-radius: 10px; cursor: pointer; - margin-top: 0 !important; + margin-top: 1rem !important; font-size: 1.5rem; margin: 0.25%; color: #fff; From 421c2b4574ba6306cf5aec64c69ad7a2effa17b2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:40:01 +0300 Subject: [PATCH 0572/1179] Update timestamp.md --- src/tools/timestamp.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 7b4ee79fb0d..24481832b79 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -63,6 +63,8 @@ display: flex; justify-content: center; flex-wrap: wrap; + margin-bottom: 1rem; + margin-top: 0.5rem; } .converter-section button { outline: none; From 7b40e453c19210aedd0cca95c062c1111cdc9cda Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:41:55 +0300 Subject: [PATCH 0573/1179] Update timestamp.md --- src/tools/timestamp.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 24481832b79..e2e910bceb7 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -63,8 +63,8 @@ display: flex; justify-content: center; flex-wrap: wrap; - margin-bottom: 1rem; - margin-top: 0.5rem; + margin-bottom: 2rem; + margin-top: -1rem; } .converter-section button { outline: none; @@ -78,6 +78,7 @@ border-radius: 10px; cursor: pointer; margin-top: 1rem !important; + margin-right: 0.5rem; font-size: 1.5rem; margin: 0.25%; color: #fff; From 069a3399fbd93eb0f7f6071c6424e4098818956e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:44:58 +0300 Subject: [PATCH 0574/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index e2e910bceb7..9dc941b2fb7 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -78,7 +78,7 @@ border-radius: 10px; cursor: pointer; margin-top: 1rem !important; - margin-right: 0.5rem; + margin-right: 1rem !important; font-size: 1.5rem; margin: 0.25%; color: #fff; From 4d22d054a693d27a12c1d15991306ae8907f8163 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:46:25 +0300 Subject: [PATCH 0575/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 9dc941b2fb7..74405b1b873 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -55,7 +55,7 @@ } .timestamp { color: #7f8c8d; - margin-top: 5px; + width: 2rem; } .time-buttons { user-select: none; From ded121e4902ae541ef80d0d225e92cc771a31c8a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:48:05 +0300 Subject: [PATCH 0576/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 74405b1b873..62d7e1cab55 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -5,7 +5,7 @@ position: relative; background-color: var(--color3); border-radius: 10px; - margin-top: -6%; + margin-top: -3%; padding-bottom: 1.5rem; padding-left: 15px; padding-right: 15px; From 1d1b8339adbf7fa12cd16677d8119a31071b9974 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:50:16 +0300 Subject: [PATCH 0577/1179] Update timestamp.md --- src/tools/timestamp.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 62d7e1cab55..606eac71a32 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -31,17 +31,19 @@ color: #34495e; } input { - width: 100%; - padding: 12px; - border: 2px solid #ddd; - border-radius: 10px; - margin-bottom: 10px; - box-sizing: border-box; - transition: border-color 0.3s; - } - input:focus { + color: #bbb; + padding: 10px; + background: hsl(0deg 0% 100% / 7%); + border-radius: 10px; + border-width: 0; + border-radius: 10px; + font-family: monospace; + font-size: 14px; + height: 3rem; outline: none; - border-color: #3498db; + touch-action: manipulation; + -webkit-user-select: none; + user-select: none; } .result { margin-top: 15px; From cb67592219fae18271cfd049a64188267a673b27 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:51:23 +0300 Subject: [PATCH 0578/1179] Update timestamp.md --- src/tools/timestamp.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 606eac71a32..8d2447315d3 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -103,6 +103,8 @@ } +Here you can manage UnixTime for your commands. + ```admonish info The timezone selected on your device is used. ``` From ac27db089a5661d55309da9b444b6c8bf254313a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:51:58 +0300 Subject: [PATCH 0579/1179] Update timestamp.md --- src/tools/timestamp.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 8d2447315d3..6470a8cc8da 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -33,6 +33,7 @@ input { color: #bbb; padding: 10px; + width: 100%; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; border-width: 0; From 5152100ed38a505b9698984510251cdc9d534262 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:52:36 +0300 Subject: [PATCH 0580/1179] Update timestamp.md --- src/tools/timestamp.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 6470a8cc8da..02c59ef481d 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -41,6 +41,7 @@ font-family: monospace; font-size: 14px; height: 3rem; + margin-bottom: 1rem; outline: none; touch-action: manipulation; -webkit-user-select: none; From 58f4d115cad577fea7ffe59e7917157ad965bc80 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:53:00 +0300 Subject: [PATCH 0581/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 02c59ef481d..8895b37d6f9 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -5,7 +5,7 @@ position: relative; background-color: var(--color3); border-radius: 10px; - margin-top: -3%; + margin-top: -10%; padding-bottom: 1.5rem; padding-left: 15px; padding-right: 15px; From c8a81ff5d9cd090c5039345ba620c6eccf559257 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:53:26 +0300 Subject: [PATCH 0582/1179] Update timestamp.md --- src/tools/timestamp.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 8895b37d6f9..7e180bd28fb 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -113,7 +113,7 @@ The timezone selected on your device is used.

Date to Unix Time

-

Date

+

Date:

Unix Timestamp:

@@ -135,4 +135,6 @@ The timezone selected on your device is used.
-
\ No newline at end of file +
+ +## Functions \ No newline at end of file From a4117b384b0226be95ad430cf918ec500bec01fd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:58:36 +0300 Subject: [PATCH 0583/1179] Update timestamp.md --- src/tools/timestamp.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 7e180bd28fb..f166ce9dd86 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -12,7 +12,7 @@ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); transition: 0.3s; } - .converter-section:hover { + .converter-section:hover, .current-time:hover { transform: scale(1.015); border-radius: 12.5px; transition: 0.3s; @@ -94,7 +94,7 @@ transform: scale(1.05); border-radius: 8px; border-width: 1px; - transition: 0.4s; + transition: 0.2s; } .current-time { text-align: center; @@ -102,6 +102,7 @@ background-color: var(--color3); border-radius: 10px; margin-top: 20px; + transition: 0.3s; } From 9f8391d90b2a42d3145533b314eb00e3e856c9b0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 20:59:20 +0300 Subject: [PATCH 0584/1179] Update timestamp.md --- src/tools/timestamp.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index f166ce9dd86..e70352ccc24 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -138,4 +138,5 @@ The timezone selected on your device is used.
-## Functions \ No newline at end of file +## Functions +- `$getTimestamp` \ No newline at end of file From 929a31c2be9eb3acc7f0aa92e8537716e2685e78 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:00:12 +0300 Subject: [PATCH 0585/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index e70352ccc24..821c72bd411 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -33,7 +33,7 @@ input { color: #bbb; padding: 10px; - width: 100%; + width: 95%; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; border-width: 0; From ff7f5386d6b899a04fe94ba33d27387a551240a1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:03:25 +0300 Subject: [PATCH 0586/1179] Update timestamp.md --- src/tools/timestamp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 821c72bd411..fcd51154444 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -33,7 +33,7 @@ input { color: #bbb; padding: 10px; - width: 95%; + width: 94%; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; border-width: 0; @@ -59,7 +59,7 @@ } .timestamp { color: #7f8c8d; - width: 2rem; + width: 3.5rem !important; } .time-buttons { user-select: none; From 25e250c8363f612da3003ccb0e6541e56872e7b5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:04:50 +0300 Subject: [PATCH 0587/1179] Update timestamp.md --- src/tools/timestamp.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index fcd51154444..b0d28b1a078 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -47,6 +47,9 @@ -webkit-user-select: none; user-select: none; } + #datetimepicker { + margin-bottom: 0.5rem; + } .result { margin-top: 15px; padding: 5px; From 5826720307ae52907fa6ea76276495313211693f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:06:05 +0300 Subject: [PATCH 0588/1179] Update timestamp.md --- src/tools/timestamp.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index b0d28b1a078..90e176ca37c 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -33,7 +33,7 @@ input { color: #bbb; padding: 10px; - width: 94%; + width: 92%; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; border-width: 0; @@ -142,4 +142,5 @@ The timezone selected on your device is used.
## Functions -- `$getTimestamp` \ No newline at end of file +- `$getTimestamp` +- `$getTimestamp[]` \ No newline at end of file From b001b44d76909daa5f48779bceb107d9c4c35a6a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:08:26 +0300 Subject: [PATCH 0589/1179] Update timestamp.md --- src/tools/timestamp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 90e176ca37c..cc461b592f0 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -33,7 +33,7 @@ input { color: #bbb; padding: 10px; - width: 92%; + width: 93.5%; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; border-width: 0; @@ -51,7 +51,7 @@ margin-bottom: 0.5rem; } .result { - margin-top: 15px; + margin-top: 20px; padding: 5px; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; From be0a840c3a0ee7ac3dd41887e582354b7c1c4952 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:10:21 +0300 Subject: [PATCH 0590/1179] Update timestamp.md --- src/tools/timestamp.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index cc461b592f0..580cad7c130 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -51,7 +51,7 @@ margin-bottom: 0.5rem; } .result { - margin-top: 20px; + margin-top: 40px; padding: 5px; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; @@ -143,4 +143,5 @@ The timezone selected on your device is used. ## Functions - `$getTimestamp` -- `$getTimestamp[]` \ No newline at end of file +- `$getTimestamp[]` +- `$premiumExpireTime` \ No newline at end of file From 75eaedd50fa7a10eb2c541cd174a731126d56a26 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:14:05 +0300 Subject: [PATCH 0591/1179] Update timestamp.md --- src/tools/timestamp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 580cad7c130..82b14a71c7b 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -51,18 +51,18 @@ margin-bottom: 0.5rem; } .result { - margin-top: 40px; + margin-top: 10px; padding: 5px; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; font-weight: bold; word-break: break-all; display: flex; + width: 3.5rem !important; align-items: center; } .timestamp { color: #7f8c8d; - width: 3.5rem !important; } .time-buttons { user-select: none; From ff9b08edeead056b671b3fe5511530e669218383 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:15:48 +0300 Subject: [PATCH 0592/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 82b14a71c7b..c678fe501b5 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -58,7 +58,7 @@ font-weight: bold; word-break: break-all; display: flex; - width: 3.5rem !important; + height: 3.5rem !important; align-items: center; } .timestamp { From 7eaf1f68f008de413fd9f806fc5b396d4c2da7b8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:16:22 +0300 Subject: [PATCH 0593/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index c678fe501b5..46107e57fcd 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -48,7 +48,7 @@ user-select: none; } #datetimepicker { - margin-bottom: 0.5rem; + margin-bottom: 1rem !important; } .result { margin-top: 10px; From 9102162022bb2bcfb97b9904dadb3a552decaf71 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:16:57 +0300 Subject: [PATCH 0594/1179] Update timestamp.md --- src/tools/timestamp.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 46107e57fcd..7a63db123df 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -143,5 +143,4 @@ The timezone selected on your device is used. ## Functions - `$getTimestamp` -- `$getTimestamp[]` -- `$premiumExpireTime` \ No newline at end of file +- `$getTimestamp[]` \ No newline at end of file From c97b468f3500359e8e7ccfe7a21f1c53f14222d8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:28:43 +0300 Subject: [PATCH 0595/1179] Update timestamp.md --- src/tools/timestamp.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 7a63db123df..a935f871ace 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -115,6 +115,12 @@ Here you can manage UnixTime for your commands. The timezone selected on your device is used. ``` +
+

Timezone

+

Specify the timezone you want to use for calculating time.

+ +
+

Date to Unix Time

Date:

From b92a3f085fe56c7edcb3bf1ed3734f55f1c1b3ec Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:33:41 +0300 Subject: [PATCH 0596/1179] Update playground.js --- src/theme/playground.js | 122 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 114 insertions(+), 8 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 67640ea4b4e..40a14e901c4 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -848,6 +848,9 @@ function changeAutocomplete() { } callButtonChange('changeAutocompleteButton', autocompleteEnabled); } + + + // Timestamp @@ -859,6 +862,10 @@ const unixInput = document.getElementById('unix-input'); const dateDisplay = document.getElementById('date-display'); const dateInfo = document.getElementById('date-info'); const currentTimeEl = document.getElementById('current-time'); +const timezoneInput = document.getElementById('timezone-input'); + +let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; +let isTimezoneValid = true; const now = new Date(); const year = now.getFullYear(); @@ -872,12 +879,111 @@ datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; const currentUnixTime = Math.floor(now.getTime() / 1000); unixInput.value = currentUnixTime; -function updateCurrentTime() { +window.updateTimezone = function() { + const timezoneValue = timezoneInput.value.trim(); + + if (!timezoneValue) { + currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; + isTimezoneValid = true; + updateDateFromUnix(); + return; + } + + try { + const testDate = new Date(); + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezoneValue, + timeZoneName: 'short' + }); + const parts = formatter.formatToParts(testDate); + + currentTimezone = timezoneValue; + isTimezoneValid = true; + updateDateFromUnix(); + } catch (error) { + console.log('invalid timezone'); + isTimezoneValid = false; + currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; + updateDateFromUnix(); + } +} + +function formatDateInTimezone(date, timezone) { + if (!isTimezoneValid || !timezone) { + return date.toLocaleString(); + } + + try { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezone, + year: 'numeric', + month: 'numeric', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + hour12: false + }); + + const parts = formatter.formatToParts(date); + const year = parts.find(p => p.type === 'year').value; + const month = parts.find(p => p.type === 'month').value.padStart(2, '0'); + const day = parts.find(p => p.type === 'day').value.padStart(2, '0'); + const hour = parts.find(p => p.type === 'hour').value.padStart(2, '0'); + const minute = parts.find(p => p.type === 'minute').value.padStart(2, '0'); + const second = parts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; + + return `${year}-${month}-${day} ${hour}:${minute}:${second}`; + } catch (error) { + return date.toLocaleString(); + } +} + +function getCurrentTimeInTimezone() { const now = new Date(); - const dateString = now.toLocaleDateString(); - const unixTime = Math.floor(now.getTime() / 1000); - currentTimeEl.innerHTML = `${dateString}
${unixTime}`; + if (!isTimezoneValid || !currentTimezone) { + return { + dateString: now.toLocaleDateString(), + unixTime: Math.floor(now.getTime() / 1000) + }; + } + + try { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: currentTimezone, + year: 'numeric', + month: 'numeric', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + hour12: false + }); + + const dateParts = formatter.formatToParts(now); + const year = dateParts.find(p => p.type === 'year').value; + const month = dateParts.find(p => p.type === 'month').value.padStart(2, '0'); + const day = dateParts.find(p => p.type === 'day').value.padStart(2, '0'); + const hour = dateParts.find(p => p.type === 'hour').value.padStart(2, '0'); + const minute = dateParts.find(p => p.type === 'minute').value.padStart(2, '0'); + const second = dateParts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; + + return { + dateString: `${year}-${month}-${day} ${hour}:${minute}:${second}`, + unixTime: Math.floor(now.getTime() / 1000) + }; + } catch (error) { + return { + dateString: now.toLocaleDateString(), + unixTime: Math.floor(now.getTime() / 1000) + }; + } +} + +function updateCurrentTime() { + const timeInfo = getCurrentTimeInTimezone(); + currentTimeEl.innerHTML = `${timeInfo.dateString}
${timeInfo.unixTime}`; } window.updateUnixTime = function() { @@ -885,7 +991,7 @@ window.updateUnixTime = function() { if (!isNaN(selectedDate.getTime())) { const unixTime = Math.floor(selectedDate.getTime() / 1000); - const dateString = selectedDate.toLocaleString(); + const dateString = formatDateInTimezone(selectedDate, currentTimezone); unixTimeDisplay.textContent = unixTime; @@ -903,9 +1009,7 @@ window.updateDateFromUnix = function() { const date = new Date(unixTime * 1000); if (!isNaN(date.getTime())) { - const dateString = date.toLocaleString(); - const isoString = date.toISOString().replace('T', ' ').substring(0, 19); - + const dateString = formatDateInTimezone(date, currentTimezone); dateDisplay.textContent = dateString; const year = date.getFullYear(); @@ -929,6 +1033,8 @@ window.updateDateFromUnix = function() { } } +updateTimezone(); + updateCurrentTime(); setInterval(updateCurrentTime, 1000); From 636e8de33393b7157a631c16d39cf3288e6ef12b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:35:53 +0300 Subject: [PATCH 0597/1179] Update playground.js --- src/theme/playground.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 40a14e901c4..9eb6d3d0037 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -855,6 +855,7 @@ function changeAutocomplete() { // Timestamp + const datetimePicker = document.getElementById('datetimepicker'); const unixTimeDisplay = document.getElementById('unixtime-display'); const timestampInfo = document.getElementById('timestamp-info'); @@ -879,7 +880,7 @@ datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; const currentUnixTime = Math.floor(now.getTime() / 1000); unixInput.value = currentUnixTime; -window.updateTimezone = function() { +function updateTimezone() { const timezoneValue = timezoneInput.value.trim(); if (!timezoneValue) { @@ -986,7 +987,7 @@ function updateCurrentTime() { currentTimeEl.innerHTML = `${timeInfo.dateString}
${timeInfo.unixTime}`; } -window.updateUnixTime = function() { +function updateUnixTime() { const selectedDate = new Date(datetimePicker.value); if (!isNaN(selectedDate.getTime())) { @@ -1002,7 +1003,7 @@ window.updateUnixTime = function() { } } -window.updateDateFromUnix = function() { +function updateDateFromUnix() { const unixTime = parseInt(unixInput.value); if (!isNaN(unixTime) && unixTime >= 0) { @@ -1072,8 +1073,7 @@ document.addEventListener('DOMContentLoaded', function() { }); unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); -}); - +}); // Color From 496a88a56ab2bbdb9b13e6ce1a74cd6a03f52001 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:48:47 +0300 Subject: [PATCH 0598/1179] Update playground.js --- src/theme/playground.js | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 9eb6d3d0037..1efff781aca 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -856,6 +856,7 @@ function changeAutocomplete() { // Timestamp + const datetimePicker = document.getElementById('datetimepicker'); const unixTimeDisplay = document.getElementById('unixtime-display'); const timestampInfo = document.getElementById('timestamp-info'); @@ -863,7 +864,7 @@ const unixInput = document.getElementById('unix-input'); const dateDisplay = document.getElementById('date-display'); const dateInfo = document.getElementById('date-info'); const currentTimeEl = document.getElementById('current-time'); -const timezoneInput = document.getElementById('timezone-input'); +const timezoneInput = document.getElementById('timezone'); let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; let isTimezoneValid = true; @@ -887,6 +888,7 @@ function updateTimezone() { currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; isTimezoneValid = true; updateDateFromUnix(); + updateCurrentTime(); return; } @@ -901,11 +903,13 @@ function updateTimezone() { currentTimezone = timezoneValue; isTimezoneValid = true; updateDateFromUnix(); + updateCurrentTime(); } catch (error) { console.log('invalid timezone'); isTimezoneValid = false; currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; updateDateFromUnix(); + updateCurrentTime(); } } @@ -1034,12 +1038,11 @@ function updateDateFromUnix() { } } -updateTimezone(); - -updateCurrentTime(); -setInterval(updateCurrentTime, 1000); +window.updateTimezone = updateTimezone; +window.updateUnixTime = updateUnixTime; +window.updateDateFromUnix = updateDateFromUnix; -document.addEventListener('DOMContentLoaded', function() { +function createQuickButtons() { const quickButtons = document.createElement('div'); quickButtons.className = 'time-buttons'; @@ -1073,6 +1076,15 @@ document.addEventListener('DOMContentLoaded', function() { }); unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); +} + +updateCurrentTime(); +setInterval(updateCurrentTime, 1000); + +document.addEventListener('DOMContentLoaded', function() { + createQuickButtons(); + updateDateFromUnix(); + updateUnixTime(); }); // Color From 945610adff2e95d64ddb7d661352af1e1c3ccf5a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 22:43:40 +0300 Subject: [PATCH 0599/1179] Update timestamp.md --- src/tools/timestamp.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index a935f871ace..1dc9ebe4de3 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -119,6 +119,7 @@ The timezone selected on your device is used.

Timezone

Specify the timezone you want to use for calculating time.

+
From 815cd25ca7cf26da8b95fc95c968e3af6357b015 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 22:43:55 +0300 Subject: [PATCH 0600/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 1dc9ebe4de3..e00803d90f3 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -119,7 +119,7 @@ The timezone selected on your device is used.

Timezone

Specify the timezone you want to use for calculating time.

- +
From 587521b8398bf800b6fa37ef1e2a30f62a36a227 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 4 Jan 2026 22:45:26 +0300 Subject: [PATCH 0601/1179] Update playground.js --- src/theme/playground.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 1efff781aca..2369e7b37b2 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -865,6 +865,7 @@ const dateDisplay = document.getElementById('date-display'); const dateInfo = document.getElementById('date-info'); const currentTimeEl = document.getElementById('current-time'); const timezoneInput = document.getElementById('timezone'); +const timezoneError = document.querySelector('.timezone-error'); let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; let isTimezoneValid = true; @@ -887,6 +888,7 @@ function updateTimezone() { if (!timezoneValue) { currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; isTimezoneValid = true; + timezoneError.textContent = ''; updateDateFromUnix(); updateCurrentTime(); return; @@ -902,10 +904,11 @@ function updateTimezone() { currentTimezone = timezoneValue; isTimezoneValid = true; + timezoneError.textContent = ''; updateDateFromUnix(); updateCurrentTime(); } catch (error) { - console.log('invalid timezone'); + timezoneError.textContent = 'Invalid timezone'; isTimezoneValid = false; currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; updateDateFromUnix(); From d49a81485f66d7df8bb5f7a683c42d38619b57e4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:03:25 +0300 Subject: [PATCH 0602/1179] Update color.md --- src/tools/color.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 3d60a94a8d1..0c301f06935 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -65,20 +65,26 @@ font-size: 12px; min-height: 16px; margin-top: 2px; - margin-bottom: 2.5px; +} +.valid-color { + color: white; + padding: 4px 8px; + border-radius: 4px; + font-weight: bold; + margin-top: 5px; + display: inline-block; } Here you can choose a color to use in your command.
-

Color picker

-

Select a color in hex format.

- +
+
## Functions From da8076636f23dd17e3f81d8dade8f61ee6ce8b8c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:08:38 +0300 Subject: [PATCH 0603/1179] Update playground.js --- src/theme/playground.js | 88 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 83 insertions(+), 5 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 2369e7b37b2..b7e670b2bf6 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1092,31 +1092,98 @@ document.addEventListener('DOMContentLoaded', function() { // Color +const colorNames = { + aliceblue: "#f0f8ff", antiquewhite: "#faebd7", aqua: "#00ffff", + aquamarine: "#7fffd4", azure: "#f0ffff", beige: "#f5f5dc", + bisque: "#ffe4c4", black: "#000000", blanchedalmond: "#ffebcd", + blue: "#0000ff", blueviolet: "#8a2be2", brown: "#a52a2a", + burlywood: "#deb887", cadetblue: "#5f9ea0", chartreuse: "#7fff00", + chocolate: "#d2691e", coral: "#ff7f50", cornflowerblue: "#6495ed", + cornsilk: "#fff8dc", crimson: "#dc143c", cyan: "#00ffff", + darkblue: "#00008b", darkcyan: "#008b8b", darkgoldenrod: "#b8860b", + darkgray: "#a9a9a9", darkgreen: "#006400", darkgrey: "#a9a9a9", + darkkhaki: "#bdb76b", darkmagenta: "#8b008b", darkolivegreen: "#556b2f", + darkorange: "#ff8c00", darkorchid: "#9932cc", darkred: "#8b0000", + darksalmon: "#e9967a", darkseagreen: "#8fbc8f", darkslateblue: "#483d8b", + darkslategray: "#2f4f4f", darkslategrey: "#2f4f4f", darkturquoise: "#00ced1", + darkviolet: "#9400d3", deeppink: "#ff1493", deepskyblue: "#00bfff", + dimgray: "#696969", dimgrey: "#696969", dodgerblue: "#1e90ff", + firebrick: "#b22222", floralwhite: "#fffaf0", forestgreen: "#228b22", + fuchsia: "#ff00ff", gainsboro: "#dcdcdc", ghostwhite: "#f8f8ff", + gold: "#ffd700", goldenrod: "#daa520", gray: "#808080", + green: "#008000", greenyellow: "#adff2f", grey: "#808080", + honeydew: "#f0fff0", hotpink: "#ff69b4", indianred: "#cd5c5c", + indigo: "#4b0082", ivory: "#fffff0", khaki: "#f0e68c", + lavender: "#e6e6fa", lavenderblush: "#fff0f5", lawngreen: "#7cfc00", + lemonchiffon: "#fffacd", lightblue: "#add8e6", lightcoral: "#f08080", + lightcyan: "#e0ffff", lightgoldenrodyellow: "#fafad2", lightgray: "#d3d3d3", + lightgreen: "#90ee90", lightgrey: "#d3d3d3", lightpink: "#ffb6c1", + lightsalmon: "#ffa07a", lightseagreen: "#20b2aa", lightskyblue: "#87cefa", + lightslategray: "#778899", lightslategrey: "#778899", lightsteelblue: "#b0c4de", + lightyellow: "#ffffe0", lime: "#00ff00", limegreen: "#32cd32", + linen: "#faf0e6", magenta: "#ff00ff", maroon: "#800000", + mediumaquamarine: "#66cdaa", mediumblue: "#0000cd", mediumorchid: "#ba55d3", + mediumpurple: "#9370db", mediumseagreen: "#3cb371", mediumslateblue: "#7b68ee", + mediumspringgreen: "#00fa9a", mediumturquoise: "#48d1cc", mediumvioletred: "#c71585", + midnightblue: "#191970", mintcream: "#f5fffa", mistyrose: "#ffe4e1", + moccasin: "#ffe4b5", navajowhite: "#ffdead", navy: "#000080", + oldlace: "#fdf5e6", olive: "#808000", olivedrab: "#6b8e23", + orange: "#ffa500", orangered: "#ff4500", orchid: "#da70d6", + palegoldenrod: "#eee8aa", palegreen: "#98fb98", paleturquoise: "#afeeee", + palevioletred: "#db7093", papayawhip: "#ffefd5", peachpuff: "#ffdab9", + peru: "#cd853f", pink: "#ffc0cb", plum: "#dda0dd", + powderblue: "#b0e0e6", purple: "#800080", rebeccapurple: "#663399", + red: "#ff0000", rosybrown: "#bc8f8f", royalblue: "#4169e1", + saddlebrown: "#8b4513", salmon: "#fa8072", sandybrown: "#f4a460", + seagreen: "#2e8b57", seashell: "#fff5ee", sienna: "#a0522d", + silver: "#c0c0c0", skyblue: "#87ceeb", slateblue: "#6a5acd", + slategray: "#708090", slategrey: "#708090", snow: "#fffafa", + springgreen: "#00ff7f", steelblue: "#4682b4", tan: "#d2b48c", + teal: "#008080", thistle: "#d8bfd8", tomato: "#ff6347", + turquoise: "#40e0d0", violet: "#ee82ee", wheat: "#f5deb3", + white: "#ffffff", whitesmoke: "#f5f5f5", yellow: "#ffff00", + yellowgreen: "#9acd32" +}; + function colorPickerChange() { const colorPicker = document.getElementById('colorPicker'); const hexInput = document.getElementById('hexInput'); const errorText = document.getElementById('errorText'); + const validColorDisplay = document.getElementById('validColorDisplay'); const color = colorPicker.value; hexInput.value = color; errorText.textContent = ''; + validColorDisplay.innerHTML = `
${color}
`; } function hexInputChange() { const colorPicker = document.getElementById('colorPicker'); const hexInput = document.getElementById('hexInput'); const errorText = document.getElementById('errorText'); + const validColorDisplay = document.getElementById('validColorDisplay'); - let val = hexInput.value.trim(); + let val = hexInput.value.trim().toLowerCase(); if (val === '') { errorText.textContent = ''; + validColorDisplay.innerHTML = ''; return; } - if (val[0] !== '#') { + let hexColor = ''; + + if (colorNames[val]) { + hexColor = colorNames[val]; + } else if (val[0] !== '#') { val = '#' + val; - hexInput.value = val; + } + + if (hexColor) { + colorPicker.value = hexColor; + errorText.textContent = ''; + validColorDisplay.innerHTML = `
${hexColor}
`; + return; } const isValid = /^#[0-9A-Fa-f]{6}$/.test(val) || /^#[0-9A-Fa-f]{3}$/.test(val); @@ -1125,8 +1192,10 @@ function hexInputChange() { const finalColor = val.length === 4 ? expandHex(val) : val; colorPicker.value = finalColor; errorText.textContent = ''; + validColorDisplay.innerHTML = `
${finalColor}
`; } else { - errorText.textContent = 'Invalid color'; + errorText.textContent = 'Неверный формат цвета или название'; + validColorDisplay.innerHTML = ''; } } @@ -1135,4 +1204,13 @@ function expandHex(short) { return '#' + short[1] + short[1] + short[2] + short[2] + short[3] + short[3]; } return short; -} \ No newline at end of file +} + +window.onload = function() { + const colorPicker = document.getElementById('colorPicker'); + const hexInput = document.getElementById('hexInput'); + const validColorDisplay = document.getElementById('validColorDisplay'); + + hexInput.value = colorPicker.value; + validColorDisplay.innerHTML = `
${colorPicker.value}
`; +}; \ No newline at end of file From 97f37b0314c21a61f79b6de79b6fbf537ba1c930 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:12:29 +0300 Subject: [PATCH 0604/1179] Update color.md --- src/tools/color.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tools/color.md b/src/tools/color.md index 0c301f06935..fef78a4b492 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -79,6 +79,8 @@ Here you can choose a color to use in your command.
+

Color Picker

+

Select the color

From 03ebda346f8d1695079a66d0c4f0bb0bea627c1c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:12:44 +0300 Subject: [PATCH 0605/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index fef78a4b492..f8e42fa8787 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -80,7 +80,7 @@ Here you can choose a color to use in your command.

Color Picker

-

Select the color

+

Select the color.

From 705a275a67d33e60b7438c53b4765bf211decd56 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:28:14 +0300 Subject: [PATCH 0606/1179] Update playground.js --- src/theme/playground.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index b7e670b2bf6..ddc1aedcc7e 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1181,6 +1181,7 @@ function hexInputChange() { if (hexColor) { colorPicker.value = hexColor; + hexInput.value = hexColor; errorText.textContent = ''; validColorDisplay.innerHTML = `
${hexColor}
`; return; @@ -1191,10 +1192,11 @@ function hexInputChange() { if (isValid) { const finalColor = val.length === 4 ? expandHex(val) : val; colorPicker.value = finalColor; + hexInput.value = finalColor; errorText.textContent = ''; validColorDisplay.innerHTML = `
${finalColor}
`; } else { - errorText.textContent = 'Неверный формат цвета или название'; + errorText.textContent = 'Invalid color input: Failed to find HEX'; validColorDisplay.innerHTML = ''; } } From e62b8bc44e92b136ac2f11bb63ad4e7a5811a34e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:12:11 +0300 Subject: [PATCH 0607/1179] Update color.md --- src/tools/color.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index f8e42fa8787..bf9526cb02c 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -82,8 +82,8 @@ Here you can choose a color to use in your command.

Color Picker

Select the color.

- - + +
From 9af72c1ec2802a3cf125cfc495e1ce7a0bcad9a4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:14:12 +0300 Subject: [PATCH 0608/1179] Update playground.js --- src/theme/playground.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index ddc1aedcc7e..b34c72e22b3 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1196,7 +1196,7 @@ function hexInputChange() { errorText.textContent = ''; validColorDisplay.innerHTML = `
${finalColor}
`; } else { - errorText.textContent = 'Invalid color input: Failed to find HEX'; + errorText.textContent = 'Неверный формат цвета или название'; validColorDisplay.innerHTML = ''; } } @@ -1213,6 +1213,9 @@ window.onload = function() { const hexInput = document.getElementById('hexInput'); const validColorDisplay = document.getElementById('validColorDisplay'); + colorPicker.oninput = colorPickerChange; + hexInput.oninput = hexInputChange; + hexInput.value = colorPicker.value; validColorDisplay.innerHTML = `
${colorPicker.value}
`; -}; \ No newline at end of file +}; From fbe5ec84aed4dbe0402c1a349bb9db4685f8e6c2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 6 Jan 2026 23:35:18 +0300 Subject: [PATCH 0609/1179] Update addTextDisplay.md --- src/bdscript/addTextDisplay.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addTextDisplay.md b/src/bdscript/addTextDisplay.md index a567580154d..c1821bb0b42 100644 --- a/src/bdscript/addTextDisplay.md +++ b/src/bdscript/addTextDisplay.md @@ -11,7 +11,7 @@ $addTextDisplay[Content;(Container/Section name)] ``` ```admonish warning title="Limit" -This function counts as a component. A message can have a maximum of 40 components. +This function counts as a component. A message can have a maximum of 40 components. [One section](./addSection.md) can have only 3 components. ``` ### Parameters From cbaf813e956c2a8f3b948be0a4874bf5be669ddc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 7 Jan 2026 08:05:17 +0300 Subject: [PATCH 0610/1179] Update index.hbs --- src/theme/index.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/index.hbs b/src/theme/index.hbs index 06c4b75418b..b215b65f486 100644 --- a/src/theme/index.hbs +++ b/src/theme/index.hbs @@ -30,7 +30,7 @@ - + From a79b1a5683aa9538b3153b90c4d54c377ffc0236 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 01:07:49 +0300 Subject: [PATCH 0611/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 864f00c553b..48a9912a1db 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -14,20 +14,12 @@ - Added `$addContainer[]` - Added `$addSection[]` - Added `$addThumbnail[]` -- Added `$isJson[]` -- Added `$pi` -- Added `$startsWith[]` -- Added `$endsWith[]` +- Added `$addMediaGallery[]` +- Added `$addMediaGalleryItem[]` +- Added `$addActionRow[]` +- Added `$addButtonCV2[]` -# 2025 - -### Upcoming -- Components v2 (A lot of new functions!) -- Channel & Role select menu -- AI tool to generate BDScript codes -- Removing the "Translation Endpoints" setting -- Text in the app is automatically translated using AI -- Ability to change app icon — New app icons! +# 2025 ## December - Added "Sign out other sessions" button From e48a8daca695715b0a4ad1ef501b4e8f620d8ea1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 01:15:56 +0300 Subject: [PATCH 0612/1179] Update CHANGELOG.json --- external/CHANGELOG.json | 49 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/external/CHANGELOG.json b/external/CHANGELOG.json index 9739fa882d4..c4ba8f66750 100644 --- a/external/CHANGELOG.json +++ b/external/CHANGELOG.json @@ -1,6 +1,44 @@ -{ - "2025": { - "january": [ +{ + "2026": { + "january": [ + "Added `$addTextDisplay[]`", + "Added `$addSeparator[]`", + "Added `$addContainer[]`", + "Added `$addSection[]`", + "Added `$addThumbnail[]`", + "Added `$addMediaGallery[]`", + "Added `$addMediaGalleryItem[]`", + "Added `$addActionRow[]`", + "Added `$addButtonCV2[]`" + ] + }, + "2025": { + "december": [ + "Added \"Sign out other sessions\" button", + "Smoother animations in the app", + "Redesigned Premium Points shop", + "A lot of app bug fixes", + "HTTP Awaiting Limit: 5s > 35s", + "Fixed `$ceil[]`", + "Fixed `$floor[]`", + "Fixed `$getLeaderboardPosition[]`", + "AI Quota: 5000 > 10000", + "Log Quota: 1500 > 3000", + "Updated BDFD App icon for Android" + ], + "november": [ + "Major improvements to hosting infrastructure", + "Reworked bot status preview", + "HTTP Awaiting Limit: 15s > 5s" + ], + "october": ["Added setting to disable code highlighting in the command editor"], + "september": [ + "Updated BDFD App icon for iOS 26", + "Reworked bot list" + ], + "july": ["BDScript bug fixes"], + "february": ["Fixed app crashing during premium points purchases"], + "january": [ "Added `$afkChannelID`", "Added `$afkTimeout[]`", "Added `$boostLevel`", @@ -42,7 +80,10 @@ "Added `$setUserRoles[]`", "Added `$getLeaderboardPosition[]`" ], - "june": ["Added `$ai[]`", "Added `$aiQuota`"], + "june": [ + "Added `$ai[]`", + "Added `$aiQuota`" + ], "march": [ "Fixed the bot sometimes duplicating its answer", "Fixed `$onlyForIDs[]` not working correctly on big nodes" From ea07f75fb9bb1f4de985a6e83022878d09242054 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 01:30:48 +0300 Subject: [PATCH 0613/1179] Create addThumbnail.md --- src/bdscript/addThumbnail.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/bdscript/addThumbnail.md diff --git a/src/bdscript/addThumbnail.md b/src/bdscript/addThumbnail.md new file mode 100644 index 00000000000..9bc5e349f19 --- /dev/null +++ b/src/bdscript/addThumbnail.md @@ -0,0 +1,34 @@ +# $addThumbnail +
+ Components v2 +
+ +Adds a thumbnail component to [the section](./addSection.md). + +## Syntax +``` +$addThumbnail[Image URL;Image description;Spoiler?;Section name] +``` + +```admonish warning title="Limit" +This function counts as a component. A message can have a maximum of 40 components. +You can't add more than 3 components to [a section](./addSection.md). +``` + +### Parameters +- `Image URL` `(Type: URL || Flag: Required)`: URL of the thumbnail image. +- `Image description` `(Type: String || Flag: Emptiable)`: Alt text description for the image. +- `Spoiler?` `(Type: Bool || Flag: Emptiable)`: Will the image have a spoiler effect? +- `Section name` `(Type: String || Flag: Required)`: The name of [the section](./addSection.md) to which the component will be attached. + +## Example +``` +$nomention +$addSection[Section] +$addTextDisplay[Hallow world!;Section] +$addThumbnail[$authorAvatar;My avatar;;Section] +``` + +```admonish question title="What is this?" +How [`$addSection[]`](./addSection.md), [`$authorAvatar`](./authorAvatar.md) and [`$addTextDisplay[]`](./addTextDisplay.md) works? +``` \ No newline at end of file From 11af4ed2ad27f8d13c2de01f0ac96cea542d61aa Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 01:31:30 +0300 Subject: [PATCH 0614/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index e92c9b2e370..855259f02f5 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -75,6 +75,7 @@ - [$addSeparator](./bdscript/addSeparator.md) - [$addTextDisplay](./bdscript/addTextDisplay.md) - [$addTextInput](./bdscript/addTextInput.md) + - [$addThumbnail](./bdscript/addThumbnail.md) - [$addTimestamp](./bdscript/addTimestamp.md) - [$addTimestamp[]](./bdscript/addTimestampComplex.md) - [$afkChannelID](./bdscript/afkChannelID.md) From 5a372e51b5d567cd96b9897eeae669a3ebb5c6cd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 01:32:05 +0300 Subject: [PATCH 0615/1179] Update addSeparator.md --- src/bdscript/addSeparator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addSeparator.md b/src/bdscript/addSeparator.md index 6079773fa50..81eaeef9867 100644 --- a/src/bdscript/addSeparator.md +++ b/src/bdscript/addSeparator.md @@ -17,7 +17,7 @@ This function counts as a container component. A message can have a maximum of 4 ### Parameters - `Divider?` `(Type: Bool || Flag: Vacantable)`: Should the message show a visual divider? - `Spacing type` `(Type: Enum || Flag: Vacantable)`: Type of the divider. [Possible types](#spacing-types). -- `Container name` `(Type: String || Flag: Optional)`: The name of the container body to which the component will be attached. If nothing is specified, it will be attached to the message. +- `Container name` `(Type: String || Flag: Optional)`: The name of [the container body](./addContainer.md) to which the component will be attached. If nothing is specified, it will be attached to the message. ### Spacing Types - `small` From 50ab72b76944e6b25584dc1f4e38cdf85ae684c1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 01:33:49 +0300 Subject: [PATCH 0616/1179] Update addThumbnail.md --- src/bdscript/addThumbnail.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/addThumbnail.md b/src/bdscript/addThumbnail.md index 9bc5e349f19..c19819aa271 100644 --- a/src/bdscript/addThumbnail.md +++ b/src/bdscript/addThumbnail.md @@ -25,7 +25,7 @@ You can't add more than 3 components to [a section](./addSection.md). ``` $nomention $addSection[Section] -$addTextDisplay[Hallow world!;Section] +$addTextDisplay[Hello world!;Section] $addThumbnail[$authorAvatar;My avatar;;Section] ``` From baebba76aaf72799797dd03d669c4fc22fac6c34 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:20:46 +0300 Subject: [PATCH 0617/1179] Update awaitFunc.md --- src/bdscript/awaitFunc.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/bdscript/awaitFunc.md b/src/bdscript/awaitFunc.md index acc2762861d..9ee3ca26592 100644 --- a/src/bdscript/awaitFunc.md +++ b/src/bdscript/awaitFunc.md @@ -31,18 +31,6 @@ $awaitFunc[say] verified: true content: | What do you want me to say? -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - I love BDFD! -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true - verified: true - content: | - I love BDFD! ``` ```admonish info title="Read more" From 577ae6c21a04d265123c3540194e184bbe746176 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:24:34 +0300 Subject: [PATCH 0618/1179] Update botCommands.md --- src/bdscript/botCommands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/botCommands.md b/src/bdscript/botCommands.md index 3c3cda6fc9e..bb6dfc65848 100644 --- a/src/bdscript/botCommands.md +++ b/src/bdscript/botCommands.md @@ -27,5 +27,5 @@ $botCommands[🔹] bot: true verified: true content: | - !help🔹!server🔹!bdfd + !help🔹!server🔹!bdfd🔹!example ``` From 32852ea0638126dca3c46700506aa0b763ec7721 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:27:16 +0300 Subject: [PATCH 0619/1179] Update botLeaveComplex.md --- src/bdscript/botLeaveComplex.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/bdscript/botLeaveComplex.md b/src/bdscript/botLeaveComplex.md index a943cbbe2d2..b5af01611fc 100644 --- a/src/bdscript/botLeaveComplex.md +++ b/src/bdscript/botLeaveComplex.md @@ -16,10 +16,6 @@ $sendMessage[I left out `$serverName[$message]` server.] $botLeave[$message] ``` -```admonish question title="What is this?" -How [`$sendMessage[]`](./sendMessage.md), [`$serverName[]`](./serverName.md) and [`$message`](./message.md) works? -``` - ```discord yaml - user_id: 803569638084313098 username: RainbowKey @@ -36,6 +32,10 @@ How [`$sendMessage[]`](./sendMessage.md), [`$serverName[]`](./serverName.md) and ``` \ ![example](https://user-images.githubusercontent.com/113303649/210337078-dbdb0539-6f4a-4271-8574-afc43551d0e8.png) + +```admonish question title="What is this?" +How [`$sendMessage[]`](./sendMessage.md), [`$serverName[]`](./serverName.md) and [`$message`](./message.md) works? +``` > If you are using **BDScript 2**, put `$botLeave[]` at the very bottom of the code so that the code works correctly i.e: > From 0fb2dab2190adcb40b7c3d6944ca4b0760d10cb5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:29:12 +0300 Subject: [PATCH 0620/1179] Update botLeave.md --- src/bdscript/botLeave.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/bdscript/botLeave.md b/src/bdscript/botLeave.md index e015b9752f1..d1fa2a2efa5 100644 --- a/src/bdscript/botLeave.md +++ b/src/bdscript/botLeave.md @@ -11,7 +11,23 @@ $botLeave $nomention $sendMessage[I left this server!] $botLeave -``` +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#ffffff" + bot: true + verified: true + content: | + I left this server! +``` +\ ![example](https://user-images.githubusercontent.com/113303649/210329580-8237da8e-762c-422f-9408-f0e734a21657.png) ```admonish question title="What is this?" From 89e31eb40183f8ea8c233250d50f6ac4fc29d28e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:34:31 +0300 Subject: [PATCH 0621/1179] Update botListHide.md --- src/bdscript/botListHide.md | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/bdscript/botListHide.md b/src/bdscript/botListHide.md index 384503328c4..b35d6e94517 100644 --- a/src/bdscript/botListHide.md +++ b/src/bdscript/botListHide.md @@ -25,9 +25,34 @@ $botListHide $botListDescription[Ping? Pong!] ``` 3. Execute commands - - ![example](https://user-images.githubusercontent.com/113303649/210347402-7b36f8f4-fc8f-4804-9310-1ed2de0392dc.png) - + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !secret +- user_id: 1009018156494368798 + username: BDFD Support + color: "#ffffff" + bot: true + verified: true + content: | + This is a secret command! 🤫 +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !ping +- user_id: 1009018156494368798 + username: BDFD Support + color: "#ffffff" + bot: true + verified: true + content: | + Pong! +``` + ### With `$botListHide` ![example](https://user-images.githubusercontent.com/113303649/210349185-677b00f3-df10-4443-a9b5-25ec9c2c2e29.png) From 49911a2cf264cd04fa95ee4acdf2f126243c3f01 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:34:58 +0300 Subject: [PATCH 0622/1179] Update botListHide.md --- src/bdscript/botListHide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/botListHide.md b/src/bdscript/botListHide.md index b35d6e94517..d03cbb680ea 100644 --- a/src/bdscript/botListHide.md +++ b/src/bdscript/botListHide.md @@ -34,7 +34,7 @@ $botListHide !secret - user_id: 1009018156494368798 username: BDFD Support - color: "#ffffff" + color: "#378afa" bot: true verified: true content: | @@ -46,7 +46,7 @@ $botListHide !ping - user_id: 1009018156494368798 username: BDFD Support - color: "#ffffff" + color: "#378afa" bot: true verified: true content: | From 001a92ad6e865c6107becc3303fccb12e4a9cacb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:37:49 +0300 Subject: [PATCH 0623/1179] Update botLeave.md --- src/bdscript/botLeave.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/bdscript/botLeave.md b/src/bdscript/botLeave.md index d1fa2a2efa5..474e1b54443 100644 --- a/src/bdscript/botLeave.md +++ b/src/bdscript/botLeave.md @@ -33,7 +33,8 @@ $botLeave ```admonish question title="What is this?" How [`$sendMessage[]`](./sendMessage.md) works? ``` - + +~~~admonish warning > If you are using **BDScript 2**, put `$botLeave` at the very bottom of the code so that the code works correctly i.e: > > ❌ Not correct: @@ -48,4 +49,6 @@ How [`$sendMessage[]`](./sendMessage.md) works? > $nomention > $sendMessage[I left this server!] > $botLeave -> ``` +> ``` + +~~~ From 5e1b7d67030085e8cccdab9afa5a5c9693b8cc72 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:38:45 +0300 Subject: [PATCH 0624/1179] Update botLeaveComplex.md --- src/bdscript/botLeaveComplex.md | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/bdscript/botLeaveComplex.md b/src/bdscript/botLeaveComplex.md index b5af01611fc..ec995e65b55 100644 --- a/src/bdscript/botLeaveComplex.md +++ b/src/bdscript/botLeaveComplex.md @@ -36,19 +36,22 @@ $botLeave[$message] ```admonish question title="What is this?" How [`$sendMessage[]`](./sendMessage.md), [`$serverName[]`](./serverName.md) and [`$message`](./message.md) works? ``` + +~~~admonish warning +If you are using **BDScript 2**, put `$botLeave[]` at the very bottom of the code so that the code works correctly i.e: + +❌ Not correct: +``` +$botLeave[$message] +$nomention +$sendMessage[I left this server!] +``` -> If you are using **BDScript 2**, put `$botLeave[]` at the very bottom of the code so that the code works correctly i.e: -> -> ❌ Not correct: -> ``` -> $botLeave[$message] -> $nomention -> $sendMessage[I left this server!] -> ``` -> -> ✅ Correct: -> ``` -> $nomention -> $sendMessage[I left this server!] -> $botLeave[$message] -> ``` +✅ Correct: +``` +$nomention +$sendMessage[I left this server!] +$botLeave[$message] +``` + +~~~ \ No newline at end of file From 6278d795e1a50184bb62db226f98b98253a042a6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:39:38 +0300 Subject: [PATCH 0625/1179] Update addCmdReactions.md --- src/bdscript/addCmdReactions.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addCmdReactions.md b/src/bdscript/addCmdReactions.md index 1b5d15b5caa..944ff3b71c9 100644 --- a/src/bdscript/addCmdReactions.md +++ b/src/bdscript/addCmdReactions.md @@ -35,8 +35,10 @@ $addCmdReactions[$message] ``` ### How to get emoji ID? - -> This method requires [Developer Mode](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) to be enabled! + +```admonish warning +This method requires [Developer Mode](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) to be enabled! +``` 1. Type `\:TheEmojiName:` 2. Send the message. From 20d39fd6e366126b8d16bef14c1b1ab4c2428132 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:41:11 +0300 Subject: [PATCH 0626/1179] Update addMessageReactions.md --- src/bdscript/addMessageReactions.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addMessageReactions.md b/src/bdscript/addMessageReactions.md index 6c186108435..242a414fec8 100644 --- a/src/bdscript/addMessageReactions.md +++ b/src/bdscript/addMessageReactions.md @@ -29,8 +29,10 @@ Successfully added the reactions to the message. ![example1](https://user-images.githubusercontent.com/111157596/249183563-89753bae-aa63-4f42-8172-30975f468189.gif) ## How to get emoji ID? - -> This method requires [Developer Mode](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) to be enabled! + +```admonish warning +This method requires [Developer Mode](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) to be enabled! +``` 1. Type `\:TheEmojiName:` 2. Send the message. From 47f5ce591662856fd91b36e81c72f45eb53a73e8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:41:44 +0300 Subject: [PATCH 0627/1179] Update addReactions.md --- src/bdscript/addReactions.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addReactions.md b/src/bdscript/addReactions.md index 0576d24687f..1cba989c867 100644 --- a/src/bdscript/addReactions.md +++ b/src/bdscript/addReactions.md @@ -46,8 +46,10 @@ $addReactions[✅;:x:] ``` \ ### How to get emoji ID? - -> This method requires [Developer Mode](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) to be enabled! + +```admonish warning +This method requires [Developer Mode](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) to be enabled! +``` 1. Type `\:TheEmojiName:` 2. Send the message. From 0967cfd3ee5061c0cc26cbe642156214409ecbb2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:45:51 +0300 Subject: [PATCH 0628/1179] Update alternativeParsing.md --- src/bdscript/alternativeParsing.md | 126 ++++++++++++++--------------- 1 file changed, 62 insertions(+), 64 deletions(-) diff --git a/src/bdscript/alternativeParsing.md b/src/bdscript/alternativeParsing.md index c99e82a0274..df477ddf191 100644 --- a/src/bdscript/alternativeParsing.md +++ b/src/bdscript/alternativeParsing.md @@ -16,8 +16,11 @@ Changes the way how triggers are read. ## Syntax ``` $alternativeParsing -``` -> This function was added at the end of 2019 as an experiment, and it can be unstable and break your commands. You should not use `$alternativeParsing` when making your bot. +``` + +```admonish fail +This function was added at the end of 2019 as an experiment, and it can be unstable and break your commands. You should not use `$alternativeParsing` when making your bot. +``` ## Example 1. Create two commands and set the trigger `hello` for one command and `helloworld` for the other. @@ -35,69 +38,64 @@ $alternativeParsing $description["helloworld"] ``` 3. Execute commands. - ``` discord yaml - - user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - hello - - - user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true - verified: true - content: - embed: - description: "\"hello\"" - - - user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - helloworld +``` discord yaml +- user_id: 729343563401265193 + username: Nicky + color: "#EE7908" + content: | + hello +- user_id: 566613317972394004 + username: Wiki Bot + color: "#748BD4" + bot: true + verified: true + content: + embed: + description: "\"hello\"" +- user_id: 729343563401265193 + username: Nicky + color: "#EE7908" + content: | + helloworld - - user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true - verified: true - content: - embed: - description: "\"helloworld\"" - ``` +- user_id: 566613317972394004 + username: Wiki Bot + color: "#748BD4" + bot: true + verified: true + content: + embed: + description: "\"helloworld\"" +``` - Without `$alternativeParsing`: - ``` discord yaml - - user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - hello - - - user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true - verified: true - content: - embed: - description: "\"hello\"" - - - user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - helloworld - - - user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true - verified: true - content: - embeds: - - description: "\"helloworld\"" - - description: "\"hello\"" - ``` +``` discord yaml +- user_id: 729343563401265193 + username: Nicky + color: "#EE7908" + content: | + hello +- user_id: 566613317972394004 + username: Wiki Bot + color: "#748BD4" + bot: true + verified: true + content: + embed: + description: "\"hello\"" +- user_id: 729343563401265193 + username: Nicky + color: "#EE7908" + content: | + helloworld +- user_id: 566613317972394004 + username: Wiki Bot + color: "#748BD4" + bot: true + verified: true + content: + embeds: + - description: "\"helloworld\"" + - description: "\"hello\"" +``` From bcffff99112f75ff09e04c9af6c2cc2c525f0b49 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:46:53 +0300 Subject: [PATCH 0629/1179] Update argsCheck.md --- src/bdscript/argsCheck.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bdscript/argsCheck.md b/src/bdscript/argsCheck.md index 038bb8644f2..8745bcb57f8 100644 --- a/src/bdscript/argsCheck.md +++ b/src/bdscript/argsCheck.md @@ -8,7 +8,11 @@ $argsCheck[How many?;Error message] ### Parameters - `How many?` `(Type: HowMany || Flag: Required)`: How many arguments there should be in the user’s message. - > If you want users to have **3 or more arguments** in their message, you can use `>3`. If you want users to have **less than 3 arguments** in their message, you can use `<3`. If you want the users to have **exactly 3 arguments** in their message, put `3`. + +```admonish tip +If you want users to have **3 or more arguments** in their message, you can use `>3`. If you want users to have **less than 3 arguments** in their message, you can use `<3`. If you want the users to have **exactly 3 arguments** in their message, put `3`. +``` + - `Error message` `(Type: String || Flag: Emptiable)`: The message that the bot will send if the user has too many/few arguments. ## Example From c94bfa81f7a19ae76cbe9f35525d08b09c2b8b5e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:49:23 +0300 Subject: [PATCH 0630/1179] Update botLeave.md --- src/bdscript/botLeave.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/bdscript/botLeave.md b/src/bdscript/botLeave.md index 474e1b54443..78799aa4597 100644 --- a/src/bdscript/botLeave.md +++ b/src/bdscript/botLeave.md @@ -35,20 +35,20 @@ How [`$sendMessage[]`](./sendMessage.md) works? ``` ~~~admonish warning -> If you are using **BDScript 2**, put `$botLeave` at the very bottom of the code so that the code works correctly i.e: -> -> ❌ Not correct: -> ``` -> $botLeave -> $nomention -> $sendMessage[I left this server!] -> ``` -> -> ✅ Correct: -> ``` -> $nomention -> $sendMessage[I left this server!] -> $botLeave -> ``` +If you are using **BDScript 2**, put `$botLeave` at the very bottom of the code so that the code works correctly i.e: + +❌ Not correct: +``` +$botLeave +$nomention +$sendMessage[I left this server!] +``` + +✅ Correct: +``` +$nomention +$sendMessage[I left this server!] +$botLeave +``` ~~~ From ccda948f73dffc78ab9f3d491e318a60355c66b9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:50:20 +0300 Subject: [PATCH 0631/1179] Update botListHide.md --- src/bdscript/botListHide.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/bdscript/botListHide.md b/src/bdscript/botListHide.md index d03cbb680ea..bc11b78bb58 100644 --- a/src/bdscript/botListHide.md +++ b/src/bdscript/botListHide.md @@ -4,8 +4,11 @@ Hides this command from being shown on the BDL command list (if the bot is on [* ## Syntax ``` $botListHide -``` -> This function does not hide the command for [`$botCommands[]`](./botCommands.md). +``` + +```admonish warning +This function does not hide the command for [`$botCommands[]`](./botCommands.md). +``` ## Example 1. Create two commands and set the trigger `!ping` for one command and `!secret` for the other. From 76e33bd93e256f31e3875f236650c7902668b876 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:51:32 +0300 Subject: [PATCH 0632/1179] Update botNode.md --- src/bdscript/botNode.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/bdscript/botNode.md b/src/bdscript/botNode.md index 5d07baa2887..a817f3b0659 100644 --- a/src/bdscript/botNode.md +++ b/src/bdscript/botNode.md @@ -4,8 +4,11 @@ Returns the bot's node ID. ## Syntax ``` $botNode -``` -> See list of Nodes and Status, [Click here](https://botdesignerdiscord.com/status). +``` + +```admonish note +See list of Nodes and Status, [Click here](https://botdesignerdiscord.com/status). +``` ## Example ``` From 614f69e6a1be40702e84b46a1a944bb842b500fd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:55:50 +0300 Subject: [PATCH 0633/1179] Update botOwnerID.md --- src/bdscript/botOwnerID.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/botOwnerID.md b/src/bdscript/botOwnerID.md index 9b06de8a77c..7e4b0f3ea66 100644 --- a/src/bdscript/botOwnerID.md +++ b/src/bdscript/botOwnerID.md @@ -1,5 +1,9 @@ # $botOwnerID Returns the bot owner's ID. + +```admonish warning +Only works if you logged into the app via your Discord account. Otherwise, if you log in via your Google/Apple account or other methods, it will return ``. +``` ## Syntax ``` From a1ad534fb2f17b54e268aec7ffa4c335b5cde2a8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:58:01 +0300 Subject: [PATCH 0634/1179] Update botLeave.md --- src/bdscript/botLeave.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/botLeave.md b/src/bdscript/botLeave.md index 78799aa4597..fac7399169b 100644 --- a/src/bdscript/botLeave.md +++ b/src/bdscript/botLeave.md @@ -35,7 +35,7 @@ How [`$sendMessage[]`](./sendMessage.md) works? ``` ~~~admonish warning -If you are using **BDScript 2**, put `$botLeave` at the very bottom of the code so that the code works correctly i.e: +If you are using **[BDScript 2](../guides/general/bds2/aboutBDScript2.md)**, put `$botLeave` at the very bottom of the code so that the code works correctly i.e: ❌ Not correct: ``` From 54169eaa1aaf96eed6a48a524a08b42f939cd21e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:58:23 +0300 Subject: [PATCH 0635/1179] Update botLeaveComplex.md --- src/bdscript/botLeaveComplex.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/botLeaveComplex.md b/src/bdscript/botLeaveComplex.md index ec995e65b55..dbe3ce5d33a 100644 --- a/src/bdscript/botLeaveComplex.md +++ b/src/bdscript/botLeaveComplex.md @@ -38,7 +38,7 @@ How [`$sendMessage[]`](./sendMessage.md), [`$serverName[]`](./serverName.md) and ``` ~~~admonish warning -If you are using **BDScript 2**, put `$botLeave[]` at the very bottom of the code so that the code works correctly i.e: +If you are using **[BDScript 2](../guides/general/bds2/aboutBDScript2.md)**, put `$botLeave[]` at the very bottom of the code so that the code works correctly i.e: ❌ Not correct: ``` From b9d531b169d43275df19a34fbbfa2aaf3467debc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:07:33 +0300 Subject: [PATCH 0636/1179] Update categoryChannels.md --- src/bdscript/categoryChannels.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/categoryChannels.md b/src/bdscript/categoryChannels.md index 819321d861a..2fe3f8881f5 100644 --- a/src/bdscript/categoryChannels.md +++ b/src/bdscript/categoryChannels.md @@ -16,8 +16,10 @@ $categoryChannels[Category ID;Separator;(Option)] - `id` - The IDs of the channels. - `mention` - The mentions of the channels. - `count` - The amount of channels in the category. - -> The `count` option does not list anything, instead it will return the number of channels under the given category. + +```admonish note +The `count` option does not list anything, instead it will return the number of channels under the given category. +``` ## Example ``` From d4003f92bbfcff69c5c01f105f780b2492191eca Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:09:07 +0300 Subject: [PATCH 0637/1179] Update categoryChannels.md --- src/bdscript/categoryChannels.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bdscript/categoryChannels.md b/src/bdscript/categoryChannels.md index 2fe3f8881f5..5656bee71ca 100644 --- a/src/bdscript/categoryChannels.md +++ b/src/bdscript/categoryChannels.md @@ -24,8 +24,8 @@ The `count` option does not list anything, instead it will return the number of ## Example ``` $nomention -Total $categoryChannels[$categoryID[BDFD];;count] channels! -$categoryChannels[$categoryID[BDFD]; +Total $categoryChannels[$parentID;;count] channels! +$categoryChannels[$parentID; ;mention] ``` @@ -51,5 +51,5 @@ $categoryChannels[$categoryID[BDFD]; ``` ```admonish question title="What is this?" -How [`$categoryID[]`](./categoryID.md) works? +How [`$parentID`](./parentID.md) works? ``` From 8f5b38412197b9e4873ecf3c1a7d9d13acba7ac7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:10:13 +0300 Subject: [PATCH 0638/1179] Update categoryChannels.md --- src/bdscript/categoryChannels.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/bdscript/categoryChannels.md b/src/bdscript/categoryChannels.md index 5656bee71ca..b256b4026a9 100644 --- a/src/bdscript/categoryChannels.md +++ b/src/bdscript/categoryChannels.md @@ -35,7 +35,6 @@ $categoryChannels[$parentID; color: "#EE7908" content: | !example - - user_id: 566613317972394004 username: Wiki Bot color: "#748BD4" @@ -44,7 +43,7 @@ $categoryChannels[$parentID; content: | Total 5 channels! <#rules> - <#news> + <#example> <#update-logs> <#main-chat> <#secret-channel> From d99936b25c341f22ab738ea208639952652c41b0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:18:35 +0300 Subject: [PATCH 0639/1179] Update changeUsernameWithID.md --- src/bdscript/changeUsernameWithID.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/bdscript/changeUsernameWithID.md b/src/bdscript/changeUsernameWithID.md index 1c9765dfd0b..a42dcb3addd 100644 --- a/src/bdscript/changeUsernameWithID.md +++ b/src/bdscript/changeUsernameWithID.md @@ -13,8 +13,8 @@ $changeUsernameWithID[User ID;New nickname] ## Example ``` $nomention -$addCmdReactions[❤️] -$changeUsernameWithID[$message[1];$message[2]] +Successfuly changed! +$changeUsernameWithID[$botID;$message] ``` ``` discord yaml @@ -22,13 +22,9 @@ $changeUsernameWithID[$message[1];$message[2]] username: RainbowKey color: "#E67E22" content: | - !example 154148273307910144 Owner - reactions: - - emoji: https://upload.wikimedia.org/wikipedia/commons/7/70/Symbolic_Love_Heart.png - count: 1 - reacted: false + !example The best bot ``` ```admonish question title="What is this?" -How [`$addCmdReactions[]`](./addCmdReactions.md) and [`$message[]`](./messageComplex.md) works? +How [`$botID`](./botID.md) and [`$message`](./message.md) works? ``` From 04a088aa1d1b62c6296748f3c81e71f2fb889497 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:19:46 +0300 Subject: [PATCH 0640/1179] Update changeUsernameWithID.md --- src/bdscript/changeUsernameWithID.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/bdscript/changeUsernameWithID.md b/src/bdscript/changeUsernameWithID.md index a42dcb3addd..fb5ee1fd36c 100644 --- a/src/bdscript/changeUsernameWithID.md +++ b/src/bdscript/changeUsernameWithID.md @@ -22,7 +22,14 @@ $changeUsernameWithID[$botID;$message] username: RainbowKey color: "#E67E22" content: | - !example The best bot + !example The best bot +- user_id: 1009018156494368798 + username: The best bot + color: "#378afa" + bot: true + verified: true + content: | + Successfuly changed! ``` ```admonish question title="What is this?" From 943825352ae0c6f235be2eee2764b0e11dc298cd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:21:00 +0300 Subject: [PATCH 0641/1179] Update channelID.md --- src/bdscript/channelID.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bdscript/channelID.md b/src/bdscript/channelID.md index ddf06a43b4c..6f86ab83a38 100644 --- a/src/bdscript/channelID.md +++ b/src/bdscript/channelID.md @@ -26,9 +26,8 @@ Channel ID: $channelID Channel ID: 566370477967147018 ``` -```admonish note +~~~admonish note It will return `none` if you use it in a DM: -``` ```discord yaml - user_id: 803569638084313098 @@ -41,5 +40,7 @@ It will return `none` if you use it in a DM: verified: true content: | Channel ID: none -``` +``` + +~~~ From 8bfb531210aa0b5a961f905f9d9079cf8980b954 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:21:33 +0300 Subject: [PATCH 0642/1179] Update channelIDComplex.md --- src/bdscript/channelIDComplex.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/bdscript/channelIDComplex.md b/src/bdscript/channelIDComplex.md index b36c17d246d..9c51619ce78 100644 --- a/src/bdscript/channelIDComplex.md +++ b/src/bdscript/channelIDComplex.md @@ -30,9 +30,8 @@ Channel ID: $channelID[$message] Channel ID: 566370477967147018 ``` -```admonish note +~~~admonish note It supports category names: -``` ``` discord yaml - user_id: 803569638084313098 @@ -48,6 +47,8 @@ It supports category names: content: | Channel ID: 1009019011545178132 ``` + +~~~ ```admonish question title="What is this?" How [`$message`](./message.md) works? From d83c30fe852857934e29b72d8f3b70cb4ecd7dfc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:27:12 +0300 Subject: [PATCH 0643/1179] Update eval.md --- src/bdscript/eval.md | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/bdscript/eval.md b/src/bdscript/eval.md index e58e49183bd..6020e2d1baf 100644 --- a/src/bdscript/eval.md +++ b/src/bdscript/eval.md @@ -8,9 +8,10 @@ Evaluates the provided BDScript code. ```admonish danger title="BDScript 2" Can only be used in **[BDScript 2](../guides/general/bds2/aboutBDScript2.md)**. ``` - -> ⚠️ **Should be used with caution!** ⚠️ - + +```admonish danger +⚠️ **Should be used with caution!** ⚠️ +``` ## Syntax ``` @@ -40,16 +41,22 @@ $eval[$message] content: | Hello! My username is Nicky ``` + +```admonish question title="What is this?" +How [`$message`](./message.md) works? +``` + +~~~admonish danger +⚠️ **Should be used with caution!** ⚠️ -> How [`$message`](./message.md) works? - -> ⚠️ **Should be used with caution!** ⚠️ -> -> It is recommended to restrict the command to be only used by the bot developers, this can be done with: +It is recommended to restrict the command to be only used by the bot developers, this can be done with: + ``` $nomention $onlyForIDs[$botOwnerID;❌ You are not my owner!] $eval[$message] ``` -> How [`$onlyForIDs[]`](./onlyForIDs.md) and [`$botOwnerID`](./botOwnerID.md) works? +How [`$onlyForIDs[]`](./onlyForIDs.md) and [`$botOwnerID`](./botOwnerID.md) works? + +~~~ From 1193fcc6c69ec41e1c32d09538e66d4d5fc8d0cd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:28:59 +0300 Subject: [PATCH 0644/1179] Update c.md --- src/bdscript/c.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/bdscript/c.md b/src/bdscript/c.md index 7dc60872006..3b5d6b852e4 100644 --- a/src/bdscript/c.md +++ b/src/bdscript/c.md @@ -21,7 +21,7 @@ $c[This is a say command. You are reading a comment!] username: Nicky color: "#EE7908" content: | - !say As you can see, the comment doesn't appear! Pretty cool; right? + !example As you can see, the comment doesn't appear! Pretty cool; right? - user_id: 566613317972394004 username: Wiki Bot color: "#748BD4" @@ -30,7 +30,3 @@ $c[This is a say command. You are reading a comment!] content: | As you can see, the comment doesn't appear! Pretty cool; right? ``` - -```admonish question title="What is this?" -How [`$message`](./message.md) works? -``` From fb1e08b8eafa52e925fefa6dbd57913abc87ec5b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:30:17 +0300 Subject: [PATCH 0645/1179] Update categoryCount.md --- src/bdscript/categoryCount.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/bdscript/categoryCount.md b/src/bdscript/categoryCount.md index 8f503572a10..b8462122d61 100644 --- a/src/bdscript/categoryCount.md +++ b/src/bdscript/categoryCount.md @@ -15,8 +15,7 @@ There are $categoryCount categories in this server! username: Nicky color: "#EE7908" content: | - !categories - + !example - user_id: 566613317972394004 username: Wiki Bot color: "#748BD4" From ebb1681fa7650c570f6794b596f29de61b42836f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:30:30 +0300 Subject: [PATCH 0646/1179] Update categoryCountComplex.md --- src/bdscript/categoryCountComplex.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/categoryCountComplex.md b/src/bdscript/categoryCountComplex.md index 5a70157e341..00e58e317b6 100644 --- a/src/bdscript/categoryCountComplex.md +++ b/src/bdscript/categoryCountComplex.md @@ -20,7 +20,7 @@ There are $categoryCount[$message] categories in the server! username: Nicky color: "#EE7908" content: | - !categories 790676954247725106 + !example 790676954247725106 - user_id: 566613317972394004 username: Wiki Bot color: "#748BD4" From af8db0f4c1293e51f66e90e2bfddd115d2f82c40 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:30:47 +0300 Subject: [PATCH 0647/1179] Update categoryID.md --- src/bdscript/categoryID.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/categoryID.md b/src/bdscript/categoryID.md index b6456210c01..3f0ba4c7330 100644 --- a/src/bdscript/categoryID.md +++ b/src/bdscript/categoryID.md @@ -24,7 +24,7 @@ Category ID: $categoryID[$message] username: Nicky color: "#EE7908" content: | - !categoryID Information + !example Information - user_id: 566613317972394004 username: Wiki Bot color: "#748BD4" From 89f2a869f9df6c0b45c65f3ad0ab9b140f3a7e7e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:32:39 +0300 Subject: [PATCH 0648/1179] Update channelNames.md --- src/bdscript/channelNames.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/bdscript/channelNames.md b/src/bdscript/channelNames.md index 475ad5968cc..a283ca1e492 100644 --- a/src/bdscript/channelNames.md +++ b/src/bdscript/channelNames.md @@ -4,16 +4,23 @@ List all channel names separated by a given separator. ## Syntax ``` $channelNames[Separator;(Guild ID)] -``` +``` + +```admonish note +It can return names of the `category`, `channel`, `forum` channel types. +``` + ### Parameters - `Seperator` `(Type: String || Flag: Emptiable)`: The separator used to separate the channel names. - `Guild ID` `(Type: Snowflake || Flag: Optional)`: The guild for which to return the channel names. _(Defaults to the current guild)_ + ## Example ``` $nomention #$channelNames[ #] -``` +``` + ``` discord yaml - user_id: 803569638084313098 username: RainbowKey @@ -30,7 +37,4 @@ $nomention #media #suggestions #Category -``` - -> It can return names of the `category`, `channel`, `forum`. - +``` \ No newline at end of file From e53efdccf4e4f587a3d4e483f0590722f8d1c2fd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:33:39 +0300 Subject: [PATCH 0649/1179] Update channelType.md --- src/bdscript/channelType.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bdscript/channelType.md b/src/bdscript/channelType.md index 32910e5c4bd..20116003060 100644 --- a/src/bdscript/channelType.md +++ b/src/bdscript/channelType.md @@ -5,13 +5,14 @@ Returns the type of a channel. ``` $channelType[Channel ID] ``` - -> The different channel types that the bot will return are: `text`, `voice`, `category`, `thread`, `dm`, `stage`, `announcement` and `forum`. + +```admonish note +The different channel types that the bot will return are: `text`, `voice`, `category`, `thread`, `dm`, `stage`, `announcement` and `forum`. +``` ### Parameters - `Channel ID` `(Type: Snowflake || Flag: Required)`: The channel which type will be returned. - ## Example ``` $nomention From 8e7fe2e419840ad3ab3eb4b68915f83ecc7ac031 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:35:21 +0300 Subject: [PATCH 0650/1179] Update clear.md --- src/bdscript/clear.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/bdscript/clear.md b/src/bdscript/clear.md index 686ec4b23cc..8746c761bfd 100644 --- a/src/bdscript/clear.md +++ b/src/bdscript/clear.md @@ -1,14 +1,18 @@ # $clear Deletes a certain amount of messages. - -> When using just `$clear`, the author's message must include a number. + +```admonish tip +When using just `$clear`, the author's message must include a number. +``` ## Syntax ``` $clear ``` - -> Discord doesn't allow deleting messages in bulk which are over 2 weeks old. + +```admonish warning +Discord doesn't allow deleting messages in bulk which are over 2 weeks old. +``` ### Permissions Required permissions that the bot must have for this function to work properly: From 6c993948f0ea472fcdb76b6a91f7c0f4d873b32a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:36:09 +0300 Subject: [PATCH 0651/1179] Update clearComplex.md --- src/bdscript/clearComplex.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/clearComplex.md b/src/bdscript/clearComplex.md index 2c04ac07437..bd22854a8bb 100644 --- a/src/bdscript/clearComplex.md +++ b/src/bdscript/clearComplex.md @@ -10,8 +10,10 @@ $clear[Amount;(User ID;Remove pinned messages?)] - `Amount` `(Type: Integer || Flag: Required)`: The amount of messages to delete. (maximal 100) - `User ID` `(Type: Snowflake || Flag: Vacantable)`: If a user ID is provided, the bot will only delete messages from that user. - `Remove pinned messages?` `(Type: Bool || Flag: Optional)`: Decides whether to delete pinned messages or not. The default is `yes`. - -> Discord doesn't allow deleting messages in bulk which are over 2 weeks old. + +```admonish warning +Discord doesn't allow deleting messages in bulk which are over 2 weeks old. +``` ### Permissions Required permissions that the bot must have for this function to work properly: From 73665d00a8e5a25efc031087475db4d4d6687932 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:37:52 +0300 Subject: [PATCH 0652/1179] Update color.md --- src/bdscript/color.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bdscript/color.md b/src/bdscript/color.md index 31cf38cd1ef..2c6dbca1c44 100644 --- a/src/bdscript/color.md +++ b/src/bdscript/color.md @@ -15,14 +15,14 @@ $color[Color hex;(Index)] $nomention $description[⬅️ That is the embed color border!] $color[#673ab7] -``` +``` + ``` discord yaml - user_id: 729343563401265193 username: Nicky color: "#EE7908" content: | !example - - user_id: 566613317972394004 username: Wiki Bot color: "#748BD4" @@ -33,3 +33,7 @@ $color[#673ab7] description: ⬅️ That is the embed color border! color: "#673ab7" ``` + +```admonish question title="What is this?" +How [`$description[]`](./description.md) works? +``` \ No newline at end of file From d17fb60cb5fe5f8a30b552e53d6cbdc4a8fb600d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:38:15 +0300 Subject: [PATCH 0653/1179] Update color.md --- src/bdscript/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/color.md b/src/bdscript/color.md index 2c6dbca1c44..da7cd97b0f4 100644 --- a/src/bdscript/color.md +++ b/src/bdscript/color.md @@ -8,7 +8,7 @@ $color[Color hex;(Index)] ### Parameters - `Color hex` `(Type: Color || Flag: Emptiable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the embed border color as. You can also use color integer number. -- `Index` `(Type: Integer || Flag: Optional)`: What embed the color border should belong to (Optional). The default is `1`. [(learn more)](../resources/embedIndexes.md) +- `Index` `(Type: Integer || Flag: Optional)`: What embed the color border should belong to. The default is `1`. [(learn more)](../resources/embedIndexes.md) ## Example ``` From 2c4352fb18f8cc72292e8dbb71ca0a1ca97796bb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:39:00 +0300 Subject: [PATCH 0654/1179] Update colorRole.md --- src/bdscript/colorRole.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bdscript/colorRole.md b/src/bdscript/colorRole.md index 5636dcea8b7..60b707c7ed9 100644 --- a/src/bdscript/colorRole.md +++ b/src/bdscript/colorRole.md @@ -33,4 +33,8 @@ $colorRole[$noMentionMessage] ✅ Changed the role color of <@cool role> to #E11F0E! ``` \ -![example](https://user-images.githubusercontent.com/111157596/257056832-3040aa89-91ea-428e-b362-3ed075cf620e.png) +![example](https://user-images.githubusercontent.com/111157596/257056832-3040aa89-91ea-428e-b362-3ed075cf620e.png) + +```admonish question title="What is this?" +How [`$noMentionMessage`](./noMentionMessage.md) works? +``` From afa666314eb6d20645aaa59318a7d2b10eaf25d8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:43:34 +0300 Subject: [PATCH 0655/1179] Update cooldown.md --- src/bdscript/cooldown.md | 56 ++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/src/bdscript/cooldown.md b/src/bdscript/cooldown.md index 3dec94239a4..e4d3d46f5b6 100644 --- a/src/bdscript/cooldown.md +++ b/src/bdscript/cooldown.md @@ -18,8 +18,10 @@ Day | d | 69922554 Hour | h | 1678141301 Minute | m | 100688478068 Second | s | 6041308684139 - -> `%time%` returns how much time is left on the cooldown. + +```admonish tip +`%time%` returns how much time is left on the cooldown. +``` ## Example ``` @@ -54,30 +56,34 @@ Hi! content: | Please wait 27 Seconds, then use that command again! ``` -\ + +~~~admonish warning +If you are using **BDScript 2**, then all functions above `$cooldown[]` will always work. -> If you are using **BDScript 2**, then all functions above `$cooldown[]` will always work. -> -> ❌ Not correct: -> ``` -> $nomention -> $setUserVar[Money;$sum[$getUserVar[Money];5]] -> $sendMessage[You worked successfully and earned 5 🪙] -> $cooldown[30s;Please wait %time%, then use !work command again!] -> ``` -> Your bot will always add 5🪙 to "Money" variable. -> -> ✅ Correct: -> ``` -> $nomention -> $cooldown[30s;Please wait %time%, then use !work command again!] -> $setUserVar[Money;$sum[$getUserVar[Money];5]] -> $sendMessage[You worked successfully and earned 5 🪙] -> ``` -> How [`$setUserVar[]`](./findUser.md) and [`$sendMessage[]`](./sendMessage.md) works? +❌ Not correct: +``` +$nomention +$setUserVar[Money;$sum[$getUserVar[Money];5]] +$sendMessage[You worked successfully and earned 5 🪙] +$cooldown[30s;Please wait %time%, then use !work command again!] +``` +Your bot will always add 5🪙 to "Money" variable. -### Recommendation -You can also use these functions: +✅ Correct: +``` +$nomention +$cooldown[30s;Please wait %time%, then use !work command again!] +$setUserVar[Money;$sum[$getUserVar[Money];5]] +$sendMessage[You worked successfully and earned 5 🪙] +``` +How [`$setUserVar[]`](./findUser.md), [`$sum[]`](/sum.md) and [`$sendMessage[]`](./sendMessage.md) works? + +~~~ + +```admonish note +You can also use these functions: +- [`$changeCooldownTime[]`](./changeCooldownTime.md) - [`$getCooldown[]`](./getCooldown.md) - [`$serverCooldown[]`](./serverCooldown.md) -- [`$globalCooldown[]`](./globalCooldown.md) +- [`$globalCooldown[]`](./globalCooldown.md) +``` From 87e29345a6efacff3de18a99b8cd6c0c41c30165 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:50:03 +0300 Subject: [PATCH 0656/1179] Update createChannel.md --- src/bdscript/createChannel.md | 40 +++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/bdscript/createChannel.md b/src/bdscript/createChannel.md index 2f8befdd0b2..6501f41557e 100644 --- a/src/bdscript/createChannel.md +++ b/src/bdscript/createChannel.md @@ -4,12 +4,19 @@ Creates a new channel. ## Syntax ``` $createChannel[Name;Type;(Category ID)] -``` -> Discord allows users to create up to 500 channels per server. This includes all channel types. +``` + +```admonish warning title="Limit" +Discord allows users to create up to 500 channels per server. This includes all channel types. +``` ### Parameters - `Name` `(Type: String || Flag: Required)`: The name of the new channel. - > Channel names can have a maximum of 100 characters. + + ```admonish warning title="Limit" + Channel names can have a maximum of 100 characters. + ``` + - `Type` `(Type: Enum || Flag: Required)`: The channel type. Channel types: - `category` - `text` @@ -43,5 +50,30 @@ New channel created! \ ![example](https://user-images.githubusercontent.com/69215413/125972524-95307b17-bfcc-4525-a4fa-1d58a30a1fa9.png) + +~~~admonish tip +You can use [`$channelID[]`](./authorIDComplex.md) to return the channel ID. + +``` +$nomention +$createChannel[main-chat;text] +New channel created! ID: $channelID[main-chat] +``` + +``` discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + New channel created! ID: 566370477967147018 +``` + +~~~ -> [You can use `$channelID[]` to return the channel ID.](./authorIDComplex.md) From a0bc63e7a7374351ae0cb94102050720238e01ec Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 11:26:45 +0300 Subject: [PATCH 0657/1179] Update alternativeParsing.md --- src/bdscript/alternativeParsing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/alternativeParsing.md b/src/bdscript/alternativeParsing.md index df477ddf191..c4cd742d74a 100644 --- a/src/bdscript/alternativeParsing.md +++ b/src/bdscript/alternativeParsing.md @@ -68,7 +68,7 @@ This function was added at the end of 2019 as an experiment, and it can be unsta description: "\"helloworld\"" ``` - - Without `$alternativeParsing`: +- Without `$alternativeParsing`: ``` discord yaml - user_id: 729343563401265193 From b7668b864f03019592578b3f600055b155d58387 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:03:06 +0300 Subject: [PATCH 0658/1179] Update ignoreChannels.md --- src/bdscript/ignoreChannels.md | 41 +++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/bdscript/ignoreChannels.md b/src/bdscript/ignoreChannels.md index 57d789fceb0..5dfe500c130 100644 --- a/src/bdscript/ignoreChannels.md +++ b/src/bdscript/ignoreChannels.md @@ -13,15 +13,36 @@ $ignoreChannels[Channel IDs;...;Error message] ## Example ``` $nomention -$ignoreChannels[1099033713687404614;❌ That command can't be used in this channel!] - -Hello $username! +$ignoreChannels[566370477967147018;❌ That command can't be used in this channel!] +Hello world! ``` -**Ignored channel** - -![example1](https://user-images.githubusercontent.com/111157596/233706189-0d168572-a0e8-4c3d-803e-abf31826bb43.png) - -**Whitelisted channel** - -![example2](https://user-images.githubusercontent.com/111157596/233706206-0926d4bc-f0de-47b4-acb0-e7802772575b.png) +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + ❌ That command can't be used in this channel! +``` +\ + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Hello world! +``` From a0b8d99370b27e84567456f53361ca6c7e9ddbc6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:04:50 +0300 Subject: [PATCH 0659/1179] Update ignoreChannels.md --- src/bdscript/ignoreChannels.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/bdscript/ignoreChannels.md b/src/bdscript/ignoreChannels.md index 5dfe500c130..200229733d1 100644 --- a/src/bdscript/ignoreChannels.md +++ b/src/bdscript/ignoreChannels.md @@ -1,5 +1,39 @@ # $ignoreChannels The command can't be executed in any of the provided channels. If the channel is ignored, then the provided "Error message" is returned. + + ## Syntax ``` From a1929f2969a5c14284b76c0f9faa0b59b611bbb9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:07:52 +0300 Subject: [PATCH 0660/1179] Update isAdmin.md --- src/bdscript/isAdmin.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/isAdmin.md b/src/bdscript/isAdmin.md index e50adecae14..d9a32a4c448 100644 --- a/src/bdscript/isAdmin.md +++ b/src/bdscript/isAdmin.md @@ -33,3 +33,7 @@ Are you an admin?: `$isAdmin[$authorID]` content: | Are you an admin?: true ``` + +```admonish question title="What is this?" +How [`$authorID`](./authorID.md) works? +``` \ No newline at end of file From d0d836ac3854aa74fa356d3220eeed876960ef77 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:08:24 +0300 Subject: [PATCH 0661/1179] Update isBanned.md --- src/bdscript/isBanned.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isBanned.md b/src/bdscript/isBanned.md index 028980c4991..887dbc79e96 100644 --- a/src/bdscript/isBanned.md +++ b/src/bdscript/isBanned.md @@ -16,6 +16,10 @@ $isBanned[User ID] ## Example ``` $nomention -$isBanned[$message[1]] +$isBanned[$message] ``` ![example](https://user-images.githubusercontent.com/111157596/233709040-50d9987e-094d-4ddb-b85e-d01db865c840.png) + +```admonish question title="What is this?" +How [`$message`](./message.md) works? +``` \ No newline at end of file From 635dadd8b9fdde1d10722614275257ea22ed6b6d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:09:06 +0300 Subject: [PATCH 0662/1179] Update isBot.md --- src/bdscript/isBot.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/isBot.md b/src/bdscript/isBot.md index dd9603ec495..e1d4c75c179 100644 --- a/src/bdscript/isBot.md +++ b/src/bdscript/isBot.md @@ -45,3 +45,7 @@ Bot?: $isBot[$mentioned[1]] content: | Bot?: true ``` + +```admonish question title="What is this?" +How [`$mentioned[]`](./mentioned.md) works? +``` \ No newline at end of file From ba6db21411d0b02c16565d5fd38160a9af6ffb36 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:09:42 +0300 Subject: [PATCH 0663/1179] Update isHoisted.md --- src/bdscript/isHoisted.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isHoisted.md b/src/bdscript/isHoisted.md index 3675ff866cc..c4a5fd92d94 100644 --- a/src/bdscript/isHoisted.md +++ b/src/bdscript/isHoisted.md @@ -16,7 +16,11 @@ $isHoisted[Role ID] ## Example ``` $nomention -$isHoisted[$findRole[$message]] +$isHoisted[$message] ``` ![example](https://user-images.githubusercontent.com/69215413/126853587-2be4d152-7254-4424-9fa0-5ab1d93837f7.png) + +```admonish question title="What is this?" +How [`$message`](./message.md) works? +``` \ No newline at end of file From 919c65a40b0f750017c8090df67d602d94fa6c22 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:10:17 +0300 Subject: [PATCH 0664/1179] Update isMentionable.md --- src/bdscript/isMentionable.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bdscript/isMentionable.md b/src/bdscript/isMentionable.md index 4c3fe49d350..bc7dcb02d4b 100644 --- a/src/bdscript/isMentionable.md +++ b/src/bdscript/isMentionable.md @@ -18,7 +18,11 @@ $isMentionable[Role ID] ## Example ``` $nomention -$isMentionable[$findRole[$message]] +$isMentionable[$message] ``` -![example](https://user-images.githubusercontent.com/69215413/126853667-5263fa7a-3e79-4691-b33d-509f507670c5.png) +![example](https://user-images.githubusercontent.com/69215413/126853667-5263fa7a-3e79-4691-b33d-509f507670c5.png) + +```admonish question title="What is this?" +How [`$message`](./message.md) works? +``` From 34a8d14768d9cff5bc107a831aebd8a8d7da4e0f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:10:48 +0300 Subject: [PATCH 0665/1179] Update isMentioned.md --- src/bdscript/isMentioned.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/isMentioned.md b/src/bdscript/isMentioned.md index 7bbe50be7cf..3d44146f5ab 100644 --- a/src/bdscript/isMentioned.md +++ b/src/bdscript/isMentioned.md @@ -34,3 +34,7 @@ $isMentioned[$mentioned[1]] content: | true ``` + +```admonish question title="What is this?" +How [`$mentioned[]`](./mentioned.md) works? +``` From ebd7eaf1322bffe20f9dd9d3a1ba3e02167c8e9e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:11:59 +0300 Subject: [PATCH 0666/1179] Update isMessageEdited.md --- src/bdscript/isMessageEdited.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/isMessageEdited.md b/src/bdscript/isMessageEdited.md index f2b4ac356d9..9d6ed9d6ef1 100644 --- a/src/bdscript/isMessageEdited.md +++ b/src/bdscript/isMessageEdited.md @@ -39,5 +39,5 @@ $isMessageEdited[$channelID;$lastMessageID] > [How to get the Message/Channel ID guide.](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) ```admonish question title="What is this?" -How [`$lastMessageID`](./lastMessageID.md) works? +How [`$channelID`](./channelID.md) and [`$lastMessageID`](./lastMessageID.md) works? ``` From 65c6016a288d048341e7122b5752fac4e52c1585 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:13:39 +0300 Subject: [PATCH 0667/1179] Update isTimedOut.md --- src/bdscript/isTimedOut.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/isTimedOut.md b/src/bdscript/isTimedOut.md index bd62a5f7107..8befd31209f 100644 --- a/src/bdscript/isTimedOut.md +++ b/src/bdscript/isTimedOut.md @@ -19,3 +19,7 @@ $nomention User is timed out: $isTimedOut[$mentioned[1]] ``` ![example](https://user-images.githubusercontent.com/94063167/198900738-ed1059b6-0d73-4e97-8669-40c770281e51.png) + +```admonish question title="What is this?" +How [`$mentioned[]`](./mentioned.md) works? +``` \ No newline at end of file From 8759297ce5fa270e111c4d32a51f52df67d8beeb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:15:22 +0300 Subject: [PATCH 0668/1179] Update joinSplitText.md --- src/bdscript/joinSplitText.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/joinSplitText.md b/src/bdscript/joinSplitText.md index 4b22f96988d..59cae4c6d06 100644 --- a/src/bdscript/joinSplitText.md +++ b/src/bdscript/joinSplitText.md @@ -30,5 +30,9 @@ $joinSplitText[+] content: | hello+world+! ``` + +```admonish question title="What is this?" +How [`$textSplit[]`](./textSplit.md) and [`$message`](./message.md) works? +``` > For more info, see the [Text Splitting Guide](../guides/general/textSplitting.md). From 2e0ba02dacbe6be787762a0ecdc7ba0b2a93f86b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:16:13 +0300 Subject: [PATCH 0669/1179] Update joinSplitText.md --- src/bdscript/joinSplitText.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bdscript/joinSplitText.md b/src/bdscript/joinSplitText.md index 59cae4c6d06..23908d9663d 100644 --- a/src/bdscript/joinSplitText.md +++ b/src/bdscript/joinSplitText.md @@ -23,9 +23,10 @@ $joinSplitText[+] color: "#E67E22" content: | !example hello-world-! -- username: BDFD Support - color: "#378afa" - bot: true +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true verified: true content: | hello+world+! From 7c410c56e23091ac7372003885f25220c45c4581 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:18:22 +0300 Subject: [PATCH 0670/1179] Update kick.md --- src/bdscript/kick.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/bdscript/kick.md b/src/bdscript/kick.md index a797679be9e..261b57c2081 100644 --- a/src/bdscript/kick.md +++ b/src/bdscript/kick.md @@ -9,3 +9,10 @@ $kick ### Permissions Required permissions that the bot must have for this function to work properly: - `kick` + +## Example +``` +$nomention +$kick +Bye +``` \ No newline at end of file From ba314477e9cfc8d6ab5aa9eeabc0bee481ce5913 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:19:29 +0300 Subject: [PATCH 0671/1179] Update kickComplex.md --- src/bdscript/kickComplex.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/bdscript/kickComplex.md b/src/bdscript/kickComplex.md index b47ab51344f..816b4abada1 100644 --- a/src/bdscript/kickComplex.md +++ b/src/bdscript/kickComplex.md @@ -13,8 +13,10 @@ $kick[User ID;(Reason)] ## Example ``` $nomention -$kick[$mentioned[1];$noMentionMessage] -✅ Kicked `$username[$mentioned[1]]#$discriminator[$mentioned[1]]`! -``` +$kick[$mentioned[1];Bad guy] +✅ Kicked! +``` -![example](https://user-images.githubusercontent.com/69215413/123518740-4742a600-d675-11eb-8581-1707b6989203.png) +```admonish question title="What is this?" +How [`$mentioned[]`](./mentioned.md) works? +``` \ No newline at end of file From d9159f6dccc9c79a9ed5f2272cd3ca5b27dfb6db Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:20:17 +0300 Subject: [PATCH 0672/1179] Update kickMention.md --- src/bdscript/kickMention.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/kickMention.md b/src/bdscript/kickMention.md index b9a3946c9b0..fcdd57abdcc 100644 --- a/src/bdscript/kickMention.md +++ b/src/bdscript/kickMention.md @@ -21,7 +21,9 @@ Required permissions that the bot must have for this function to work properly: ``` $nomention $kickMention[$noMentionMessage] -✅ Kicked `$username[$mentioned[1]]#$discriminator[$mentioned[1]]`! +✅ Kicked! ``` -![example](https://user-images.githubusercontent.com/69215413/123518897-0f882e00-d676-11eb-9c32-4ee9bddd787d.png) +```admonish question title="What is this?" +How [`$noMentionMessage`](./noMentionMessage.md) works? +``` \ No newline at end of file From ab9a1f2806b641d9666988c96b65f16d970496d1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 12:23:16 +0300 Subject: [PATCH 0673/1179] Update message.md --- src/bdscript/message.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/message.md b/src/bdscript/message.md index e6d34511763..db92997ddce 100644 --- a/src/bdscript/message.md +++ b/src/bdscript/message.md @@ -17,7 +17,7 @@ $message username: Nicky color: "#EE7908" content: | - !say Hello everyone 👋 + !example Hello everyone 👋 - user_id: 566613317972394004 username: Wiki Bot color: "#748BD4" From 42550d83d60b100b98655365ab03de1f5c9b0073 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 15:59:17 +0300 Subject: [PATCH 0674/1179] Update createChannel.md --- src/bdscript/createChannel.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bdscript/createChannel.md b/src/bdscript/createChannel.md index 6501f41557e..4ed620e90f9 100644 --- a/src/bdscript/createChannel.md +++ b/src/bdscript/createChannel.md @@ -13,9 +13,9 @@ Discord allows users to create up to 500 channels per server. This includes all ### Parameters - `Name` `(Type: String || Flag: Required)`: The name of the new channel. - ```admonish warning title="Limit" - Channel names can have a maximum of 100 characters. - ``` +```admonish warning title="Limit" +Channel names can have a maximum of 100 characters. +``` - `Type` `(Type: Enum || Flag: Required)`: The channel type. Channel types: - `category` From c94ed09512b4af0018122a270c44bdf83be19c1c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 16:00:50 +0300 Subject: [PATCH 0675/1179] Update createRole.md --- src/bdscript/createRole.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/bdscript/createRole.md b/src/bdscript/createRole.md index 5cc2df5edc5..49d2433631e 100644 --- a/src/bdscript/createRole.md +++ b/src/bdscript/createRole.md @@ -4,12 +4,19 @@ Creates a new role. ## Syntax ``` $createRole[Role name;Color hex;Hoist?;Mentionable?] -``` -> Discord allows users to create up to 250 roles per server. +``` + +```admonish warning title="Limit" +Discord allows users to create up to 250 roles per server. +``` ### Parameters - `Role name` `(Type: String || Flag: Required)`: The name to give the new role. -> Role names can have a maximum of 100 characters. + +```admonish warning title="Limit" +Role names can have a maximum of 100 characters. +``` + - `Color hex` `(Type: Color || Flag: Required)`: The [color hex](https://htmlcolorcodes.com/color-picker) of the new role. - `Hoist?` `(Type: Bool || Flag: Vacantable)`: Whether the role should be displayed separately (hoisted) or not. `no` means the role won't be hoisted, `yes` means it will.\ ![example](https://user-images.githubusercontent.com/69215413/122795705-965e9480-d28b-11eb-8e4e-98338f143ecb.png) @@ -23,7 +30,7 @@ $createRole[Cool Role;#FFFF00;yes;no] New role created! ``` -``` discord yaml +```discord yaml - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" From e99cc45894d6bd30387a831d471a57e7b8692a78 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 16:03:12 +0300 Subject: [PATCH 0676/1179] Update createRole.md --- src/bdscript/createRole.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/bdscript/createRole.md b/src/bdscript/createRole.md index 49d2433631e..674a2a7d283 100644 --- a/src/bdscript/createRole.md +++ b/src/bdscript/createRole.md @@ -47,4 +47,28 @@ New role created! \ ![example](https://user-images.githubusercontent.com/69215413/125973030-7c9b980c-cffb-4f8e-aacc-a644a6fa23c3.png) -> [You can use `$roleID[]` to return the role ID.](./roleID.md) +~~~admonish tip +You can use [`$roleID[]`](./roleID.md) to return the role ID. + +``` +$nomention +$createRole[Staff;#FFFF00;no;no] +New role created! ID: $roleID[Staff] +``` + +``` discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + New role created! ID: 659789148806447134 +``` + +~~~ \ No newline at end of file From a69f420283a0930806cd4b730433adb4fa13a2a0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 20:45:03 +0300 Subject: [PATCH 0677/1179] Update playground.js --- src/theme/playground.js | 233 ---------------------------------------- 1 file changed, 233 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index b34c72e22b3..fa0713f9302 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -856,239 +856,6 @@ function changeAutocomplete() { // Timestamp - -const datetimePicker = document.getElementById('datetimepicker'); -const unixTimeDisplay = document.getElementById('unixtime-display'); -const timestampInfo = document.getElementById('timestamp-info'); -const unixInput = document.getElementById('unix-input'); -const dateDisplay = document.getElementById('date-display'); -const dateInfo = document.getElementById('date-info'); -const currentTimeEl = document.getElementById('current-time'); -const timezoneInput = document.getElementById('timezone'); -const timezoneError = document.querySelector('.timezone-error'); - -let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; -let isTimezoneValid = true; - -const now = new Date(); -const year = now.getFullYear(); -const month = String(now.getMonth() + 1).padStart(2, '0'); -const day = String(now.getDate()).padStart(2, '0'); -const hours = String(now.getHours()).padStart(2, '0'); -const minutes = String(now.getMinutes()).padStart(2, '0'); - -datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; - -const currentUnixTime = Math.floor(now.getTime() / 1000); -unixInput.value = currentUnixTime; - -function updateTimezone() { - const timezoneValue = timezoneInput.value.trim(); - - if (!timezoneValue) { - currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; - isTimezoneValid = true; - timezoneError.textContent = ''; - updateDateFromUnix(); - updateCurrentTime(); - return; - } - - try { - const testDate = new Date(); - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezoneValue, - timeZoneName: 'short' - }); - const parts = formatter.formatToParts(testDate); - - currentTimezone = timezoneValue; - isTimezoneValid = true; - timezoneError.textContent = ''; - updateDateFromUnix(); - updateCurrentTime(); - } catch (error) { - timezoneError.textContent = 'Invalid timezone'; - isTimezoneValid = false; - currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; - updateDateFromUnix(); - updateCurrentTime(); - } -} - -function formatDateInTimezone(date, timezone) { - if (!isTimezoneValid || !timezone) { - return date.toLocaleString(); - } - - try { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezone, - year: 'numeric', - month: 'numeric', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - hour12: false - }); - - const parts = formatter.formatToParts(date); - const year = parts.find(p => p.type === 'year').value; - const month = parts.find(p => p.type === 'month').value.padStart(2, '0'); - const day = parts.find(p => p.type === 'day').value.padStart(2, '0'); - const hour = parts.find(p => p.type === 'hour').value.padStart(2, '0'); - const minute = parts.find(p => p.type === 'minute').value.padStart(2, '0'); - const second = parts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; - - return `${year}-${month}-${day} ${hour}:${minute}:${second}`; - } catch (error) { - return date.toLocaleString(); - } -} - -function getCurrentTimeInTimezone() { - const now = new Date(); - - if (!isTimezoneValid || !currentTimezone) { - return { - dateString: now.toLocaleDateString(), - unixTime: Math.floor(now.getTime() / 1000) - }; - } - - try { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: currentTimezone, - year: 'numeric', - month: 'numeric', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - hour12: false - }); - - const dateParts = formatter.formatToParts(now); - const year = dateParts.find(p => p.type === 'year').value; - const month = dateParts.find(p => p.type === 'month').value.padStart(2, '0'); - const day = dateParts.find(p => p.type === 'day').value.padStart(2, '0'); - const hour = dateParts.find(p => p.type === 'hour').value.padStart(2, '0'); - const minute = dateParts.find(p => p.type === 'minute').value.padStart(2, '0'); - const second = dateParts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; - - return { - dateString: `${year}-${month}-${day} ${hour}:${minute}:${second}`, - unixTime: Math.floor(now.getTime() / 1000) - }; - } catch (error) { - return { - dateString: now.toLocaleDateString(), - unixTime: Math.floor(now.getTime() / 1000) - }; - } -} - -function updateCurrentTime() { - const timeInfo = getCurrentTimeInTimezone(); - currentTimeEl.innerHTML = `${timeInfo.dateString}
${timeInfo.unixTime}`; -} - -function updateUnixTime() { - const selectedDate = new Date(datetimePicker.value); - - if (!isNaN(selectedDate.getTime())) { - const unixTime = Math.floor(selectedDate.getTime() / 1000); - const dateString = formatDateInTimezone(selectedDate, currentTimezone); - - unixTimeDisplay.textContent = unixTime; - - if (parseInt(unixInput.value) !== unixTime) { - unixInput.value = unixTime; - updateDateFromUnix(); - } - } -} - -function updateDateFromUnix() { - const unixTime = parseInt(unixInput.value); - - if (!isNaN(unixTime) && unixTime >= 0) { - const date = new Date(unixTime * 1000); - - if (!isNaN(date.getTime())) { - const dateString = formatDateInTimezone(date, currentTimezone); - dateDisplay.textContent = dateString; - - const year = date.getFullYear(); - const month = String(date.getMonth() + 1).padStart(2, '0'); - const day = String(date.getDate()).padStart(2, '0'); - const hours = String(date.getHours()).padStart(2, '0'); - const minutes = String(date.getMinutes()).padStart(2, '0'); - - const datetimeLocalValue = `${year}-${month}-${day}T${hours}:${minutes}`; - - if (datetimePicker.value !== datetimeLocalValue) { - datetimePicker.value = datetimeLocalValue; - } - } - } else if (unixInput.value === '') { - dateDisplay.textContent = 'Not set'; - dateInfo.textContent = ''; - } else { - dateDisplay.textContent = 'Invalid timestamp'; - dateInfo.textContent = 'Please enter a valid Unix timestamp'; - } -} - -window.updateTimezone = updateTimezone; -window.updateUnixTime = updateUnixTime; -window.updateDateFromUnix = updateDateFromUnix; - -function createQuickButtons() { - const quickButtons = document.createElement('div'); - quickButtons.className = 'time-buttons'; - - const times = [ - {label: 'Now', seconds: 0}, - {label: '1 hour ago', seconds: -3600}, - {label: '1 day ago', seconds: -86400}, - {label: '1 week ago', seconds: -604800}, - {label: 'New Year 2027', seconds: 1798761600} - ]; - - times.forEach(time => { - const button = document.createElement('button'); - button.textContent = time.label; - - button.onclick = function() { - let unixTime; - if (time.seconds === 0) { - unixTime = Math.floor(Date.now() / 1000); - } else if (time.seconds > 0) { - unixTime = time.seconds; - } else { - unixTime = Math.floor(Date.now() / 1000) + time.seconds; - } - - unixInput.value = unixTime; - updateDateFromUnix(); - }; - - quickButtons.appendChild(button); - }); - - unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); -} - -updateCurrentTime(); -setInterval(updateCurrentTime, 1000); - -document.addEventListener('DOMContentLoaded', function() { - createQuickButtons(); - updateDateFromUnix(); - updateUnixTime(); -}); // Color From bfc3975cc95e510e23269d33643ba62516955e68 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:08:39 +0300 Subject: [PATCH 0678/1179] Update playground.js --- src/theme/playground.js | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index fa0713f9302..ef32b4c9b70 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -859,6 +859,7 @@ function changeAutocomplete() { // Color + const colorNames = { aliceblue: "#f0f8ff", antiquewhite: "#faebd7", aqua: "#00ffff", aquamarine: "#7fffd4", azure: "#f0ffff", beige: "#f5f5dc", @@ -948,7 +949,6 @@ function hexInputChange() { if (hexColor) { colorPicker.value = hexColor; - hexInput.value = hexColor; errorText.textContent = ''; validColorDisplay.innerHTML = `
${hexColor}
`; return; @@ -959,7 +959,6 @@ function hexInputChange() { if (isValid) { const finalColor = val.length === 4 ? expandHex(val) : val; colorPicker.value = finalColor; - hexInput.value = finalColor; errorText.textContent = ''; validColorDisplay.innerHTML = `
${finalColor}
`; } else { @@ -975,14 +974,4 @@ function expandHex(short) { return short; } -window.onload = function() { - const colorPicker = document.getElementById('colorPicker'); - const hexInput = document.getElementById('hexInput'); - const validColorDisplay = document.getElementById('validColorDisplay'); - - colorPicker.oninput = colorPickerChange; - hexInput.oninput = hexInputChange; - - hexInput.value = colorPicker.value; - validColorDisplay.innerHTML = `
${colorPicker.value}
`; -}; +document.getElementById('validColorDisplay').innerHTML = `
#000000
`; \ No newline at end of file From 4bb9b188ead8ba4bfc877ca89edaac0100d2a235 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:13:52 +0300 Subject: [PATCH 0679/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index bf9526cb02c..62e29b98c26 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -5,7 +5,7 @@ position: relative; background-color: var(--color3); border-radius: 10px; - margin-top: -10%; + margin-top: -5rem; padding-left: 15px; padding-right: 15px; box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); From 85f2e76b2dc2fec9a2f8313798df42133a840892 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:16:05 +0300 Subject: [PATCH 0680/1179] Update color.md --- src/tools/color.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/color.md b/src/tools/color.md index 62e29b98c26..e1797638c54 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -65,6 +65,7 @@ font-size: 12px; min-height: 16px; margin-top: 2px; + padding-bottom: 1rem; } .valid-color { color: white; From eeaad717c183f53246bc4329cec7c8d7b14c5f40 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:24:23 +0300 Subject: [PATCH 0681/1179] Update color.md --- src/tools/color.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index e1797638c54..ab33a84b67b 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -70,10 +70,12 @@ .valid-color { color: white; padding: 4px 8px; - border-radius: 4px; + border-radius: 10px; font-weight: bold; - margin-top: 5px; - display: inline-block; + width: fit-content; + margin-left: -1.6rem; + margin-top: -2.5rem; + display: flex; } From dd6b1d81bd1d9b679db1d52a54e5d0bc25a07bda Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:30:18 +0300 Subject: [PATCH 0682/1179] Update autocomplete.js --- src/theme/autocomplete.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 9f857bc0f92..b441b71401c 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -183,14 +183,17 @@ window.addEventListener('beforeunload', function (event) { function updateInternetConnection() { const text = document.getElementById('internetConnection'); - if (window.navigator.onLine) { - text.textContent = '👍 All services work stably.'; - text.style.color = 'green'; + if (text) { + if (window.navigator.onLine) { + text.textContent = '👍 All services work stably.'; + text.style.color = 'green'; + } else { + text.textContent = '🛜 Check your internet connection! It may affect some services...'; + text.style.color = 'red'; + } } else { - text.textContent = '🛜 Check your internet connection! It may affect some services...'; - text.style.color = 'red'; + clearInterval(intervalId); } } -setInterval(updateInternetConnection, 1000); - +const intervalId = setInterval(updateInternetConnection, 1000); From 212147918256231865d74f7285e92b382d5ef624 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:31:30 +0300 Subject: [PATCH 0683/1179] Update playground.js --- src/theme/playground.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index ef32b4c9b70..22588b2e17f 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -913,8 +913,8 @@ const colorNames = { yellowgreen: "#9acd32" }; -function colorPickerChange() { - const colorPicker = document.getElementById('colorPicker'); +function colorPickerChange(e) { + const colorPicker = e.target; const hexInput = document.getElementById('hexInput'); const errorText = document.getElementById('errorText'); const validColorDisplay = document.getElementById('validColorDisplay'); @@ -925,9 +925,9 @@ function colorPickerChange() { validColorDisplay.innerHTML = `
${color}
`; } -function hexInputChange() { +function hexInputChange(e) { + const hexInput = e.target; const colorPicker = document.getElementById('colorPicker'); - const hexInput = document.getElementById('hexInput'); const errorText = document.getElementById('errorText'); const validColorDisplay = document.getElementById('validColorDisplay'); From 9bc95c430bdab028d7ae7a4f2e3e9a787a4269c4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:37:12 +0300 Subject: [PATCH 0684/1179] Update color.md --- src/tools/color.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index ab33a84b67b..0a15ba12377 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -85,8 +85,8 @@ Here you can choose a color to use in your command.

Color Picker

Select the color.

- - + +
From 5ebfa3d05571ce9d8dcbdce68106c1104bf201b7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:37:50 +0300 Subject: [PATCH 0685/1179] Update playground.js --- src/theme/playground.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 22588b2e17f..b055cad8fc6 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -860,6 +860,7 @@ function changeAutocomplete() { // Color + const colorNames = { aliceblue: "#f0f8ff", antiquewhite: "#faebd7", aqua: "#00ffff", aquamarine: "#7fffd4", azure: "#f0ffff", beige: "#f5f5dc", @@ -913,8 +914,8 @@ const colorNames = { yellowgreen: "#9acd32" }; -function colorPickerChange(e) { - const colorPicker = e.target; +function colorPickerChange() { + const colorPicker = document.getElementById('colorPicker'); const hexInput = document.getElementById('hexInput'); const errorText = document.getElementById('errorText'); const validColorDisplay = document.getElementById('validColorDisplay'); @@ -925,8 +926,8 @@ function colorPickerChange(e) { validColorDisplay.innerHTML = `
${color}
`; } -function hexInputChange(e) { - const hexInput = e.target; +function hexInputChange() { + const hexInput = document.getElementById('hexInput'); const colorPicker = document.getElementById('colorPicker'); const errorText = document.getElementById('errorText'); const validColorDisplay = document.getElementById('validColorDisplay'); From d6862c11e14abd737f5d1ebfff1b896265cd19ef Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:45:08 +0300 Subject: [PATCH 0686/1179] Update playground.js --- src/theme/playground.js | 58 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index b055cad8fc6..ffd3bf37828 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -859,8 +859,6 @@ function changeAutocomplete() { // Color - - const colorNames = { aliceblue: "#f0f8ff", antiquewhite: "#faebd7", aqua: "#00ffff", aquamarine: "#7fffd4", azure: "#f0ffff", beige: "#f5f5dc", @@ -911,7 +909,61 @@ const colorNames = { teal: "#008080", thistle: "#d8bfd8", tomato: "#ff6347", turquoise: "#40e0d0", violet: "#ee82ee", wheat: "#f5deb3", white: "#ffffff", whitesmoke: "#f5f5f5", yellow: "#ffff00", - yellowgreen: "#9acd32" + yellowgreen: "#9acd32", + + // Дополнительные цвета + amaranth: "#e52b50", amber: "#ffbf00", amethyst: "#9966cc", + apricot: "#fbceb1", asparagus: "#87a96b", atomic: "#ff9966", + avocado: "#568203", babyblue: "#89cff0", babypink: "#f4c2c2", + bananayellow: "#ffe135", battleshipgrey: "#848482", bazaar: "#98777b", + beaublue: "#bcd4e6", bgirlblue: "#1f75fe", bigdip: "#1cac78", + bittersweet: "#fe6f5e", blond: "#faf0be", bloodred: "#660000", + blueberry: "#4f86f7", bluegreen: "#0d98ba", blush: "#de5d83", + brass: "#b5a642", brightgreen: "#66ff00", brightpink: "#ff007f", + brightturquoise: "#08e8de", brilliantrose: "#ff55a3", bronze: "#cd7f32", + bubblegum: "#ffc1cc", burgundy: "#800020", burntorange: "#cc5500", + byzantine: "#bd33a4", byzantium: "#702963", cadet: "#536872", + cambridgeblue: "#a3c1ad", camel: "#c19a6b", camouflage: "#78866b", + canary: "#ffff99", candyapplered: "#ff0800", capri: "#00bfff", + cardinal: "#c41e3a", caribbeangreen: "#00cc99", carnation: "#ffa6c9", + carmine: "#960018", carnelian: "#b31b1b", carolinablue: "#56a0d3", + carrot: "#ed9121", celadon: "#ace1af", cerise: "#de3163", + cerulean: "#007ba7", ceruleanblue: "#2a52be", champagne: "#f7e7ce", + charcoal: "#36454f", cherry: "#de3163", chestnut: "#954535", + chocolate: "#7b3f00", cinnabar: "#e34234", cinnamon: "#d2691e", + cobalt: "#0047ab", coffee: "#6f4e37", columbiablue: "#c4d8e2", + coolgrey: "#8c92ac", copper: "#b87333", copperrose: "#996666", + coralpink: "#f88379", cordovan: "#893f45", corn: "#fbec5d", + cottoncandy: "#ffbcd9", cream: "#fffdd0", crimsonred: "#990000", + cyanazure: "#4e82b4", cyberyellow: "#ffd300", daffodil: "#ffff31", + dandelion: "#f0e130", darkbrown: "#654321", darkbyzantium: "#5d3954", + darkcandyapple: "#a40000", darkcerulean: "#08457e", darkchestnut: "#986960", + darkcoral: "#cd5b45", darkelectricblue: "#536878", darkjungle: "#1a2421", + darklava: "#483c32", darkliver: "#534b4f", darkmediumgray: "#a9a9a9", + darkmidnightblue: "#003366", darkmossgreen: "#4a5d23", darkpastelblue: "#779ecb", + darkpastelgreen: "#03c03c", darkpastelpurple: "#966fd6", darkpastelred: "#c23b22", + darkpink: "#e75480", darkraspberry: "#872657", darkscarlet: "#560319", + darksienna: "#3c1414", darkspringgreen: "#177245", darktan: "#918151", + darktangerine: "#ffa812", darktaupe: "#483c32", darkterracotta: "#cc4e5c", + darkvanilla: "#d1bea8", dartmouthgreen: "#00693e", deeppuce: "#a95c68", + deeplilac: "#9955bb", deepmauve: "#d473d4", deeptaupe: "#7e5e60", + desert: "#c19a6b", desertsand: "#edc9af", dimgray: "#696969", + dodgerblue: "#1e90ff", dogwoodrose: "#d71868", dollarbill: "#85bb65", + drab: "#967117", dukeblue: "#00009c", earthyellow: "#e1a95f", + eggplant: "#614051", egghite: "#f0ead6", electricblue: "#7df9ff", + electriccrimson: "#ff003f", electricgreen: "#00ff00", electricindigo: "#6f00ff", + electriclime: "#ccff00", electricpurple: "#bf00ff", electricultramarine: "#3f00ff", + electricviolet: "#8f00ff", electricyellow: "#ffff33", emerald: "#50c878", + engineeringorange: "#be0032", etonblue: "#96c8a2", fallow: "#c19a6b", + falured: "#801818", fandango: "#b53389", fashionfuchsia: "#f400a1", + fawn: "#e5aa70", feldgrau: "#4d5d53", ferrarired: "#ff2800", + fielddrab: "#6c541e", fireenginered: "#ce2029", flame: "#e25822", + flamingopink: "#fc8eac", flavescent: "#f7e98e", flax: "#eedc82", + fluorescentorange: "#ffbf00", fluorescentpink: "#ff1493", fluorescentyellow: "#ccff00", + folly: "#ff004f", forestgreen: "#228b22", frenchbeige: "#a67b5b", + frenchblue: "#0072bb", frenchlilac: "#86608e", frenchrose: "#f64a8a", + fuchsiapink: "#ff77ff", fuchsiapurple: "#cc397b", fulvous: "#e48400", + fuzzywuzzy: "#cc6666" }; function colorPickerChange() { From dc3cd0c48f134b13133ea873ddda77ba607b9cfc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:46:04 +0300 Subject: [PATCH 0687/1179] Update playground.js --- src/theme/playground.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index ffd3bf37828..6a3e7990e17 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1015,7 +1015,7 @@ function hexInputChange() { errorText.textContent = ''; validColorDisplay.innerHTML = `
${finalColor}
`; } else { - errorText.textContent = 'Неверный формат цвета или название'; + errorText.textContent = 'Invalid color hex or name.'; validColorDisplay.innerHTML = ''; } } From 678ea3c90ff0aeac1142da892a5134a5c4f8607a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:46:30 +0300 Subject: [PATCH 0688/1179] Update playground.js --- src/theme/playground.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 6a3e7990e17..9d0e37999a3 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -911,7 +911,7 @@ const colorNames = { white: "#ffffff", whitesmoke: "#f5f5f5", yellow: "#ffff00", yellowgreen: "#9acd32", - // Дополнительные цвета + // Extra colors amaranth: "#e52b50", amber: "#ffbf00", amethyst: "#9966cc", apricot: "#fbceb1", asparagus: "#87a96b", atomic: "#ff9966", avocado: "#568203", babyblue: "#89cff0", babypink: "#f4c2c2", From f77f5e112ba1e32e58b11132e8f8de2a91fced59 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:54:01 +0300 Subject: [PATCH 0689/1179] Update playground.js --- src/theme/playground.js | 208 +++++++++++++++++++++++++++++----------- 1 file changed, 154 insertions(+), 54 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 9d0e37999a3..59c4ad16261 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -860,6 +860,7 @@ function changeAutocomplete() { // Color const colorNames = { + // CSS aliceblue: "#f0f8ff", antiquewhite: "#faebd7", aqua: "#00ffff", aquamarine: "#7fffd4", azure: "#f0ffff", beige: "#f5f5dc", bisque: "#ffe4c4", black: "#000000", blanchedalmond: "#ffebcd", @@ -910,60 +911,159 @@ const colorNames = { turquoise: "#40e0d0", violet: "#ee82ee", wheat: "#f5deb3", white: "#ffffff", whitesmoke: "#f5f5f5", yellow: "#ffff00", yellowgreen: "#9acd32", - - // Extra colors - amaranth: "#e52b50", amber: "#ffbf00", amethyst: "#9966cc", - apricot: "#fbceb1", asparagus: "#87a96b", atomic: "#ff9966", - avocado: "#568203", babyblue: "#89cff0", babypink: "#f4c2c2", - bananayellow: "#ffe135", battleshipgrey: "#848482", bazaar: "#98777b", - beaublue: "#bcd4e6", bgirlblue: "#1f75fe", bigdip: "#1cac78", - bittersweet: "#fe6f5e", blond: "#faf0be", bloodred: "#660000", - blueberry: "#4f86f7", bluegreen: "#0d98ba", blush: "#de5d83", - brass: "#b5a642", brightgreen: "#66ff00", brightpink: "#ff007f", - brightturquoise: "#08e8de", brilliantrose: "#ff55a3", bronze: "#cd7f32", - bubblegum: "#ffc1cc", burgundy: "#800020", burntorange: "#cc5500", - byzantine: "#bd33a4", byzantium: "#702963", cadet: "#536872", - cambridgeblue: "#a3c1ad", camel: "#c19a6b", camouflage: "#78866b", - canary: "#ffff99", candyapplered: "#ff0800", capri: "#00bfff", - cardinal: "#c41e3a", caribbeangreen: "#00cc99", carnation: "#ffa6c9", - carmine: "#960018", carnelian: "#b31b1b", carolinablue: "#56a0d3", - carrot: "#ed9121", celadon: "#ace1af", cerise: "#de3163", - cerulean: "#007ba7", ceruleanblue: "#2a52be", champagne: "#f7e7ce", - charcoal: "#36454f", cherry: "#de3163", chestnut: "#954535", - chocolate: "#7b3f00", cinnabar: "#e34234", cinnamon: "#d2691e", - cobalt: "#0047ab", coffee: "#6f4e37", columbiablue: "#c4d8e2", - coolgrey: "#8c92ac", copper: "#b87333", copperrose: "#996666", - coralpink: "#f88379", cordovan: "#893f45", corn: "#fbec5d", - cottoncandy: "#ffbcd9", cream: "#fffdd0", crimsonred: "#990000", - cyanazure: "#4e82b4", cyberyellow: "#ffd300", daffodil: "#ffff31", - dandelion: "#f0e130", darkbrown: "#654321", darkbyzantium: "#5d3954", - darkcandyapple: "#a40000", darkcerulean: "#08457e", darkchestnut: "#986960", - darkcoral: "#cd5b45", darkelectricblue: "#536878", darkjungle: "#1a2421", - darklava: "#483c32", darkliver: "#534b4f", darkmediumgray: "#a9a9a9", - darkmidnightblue: "#003366", darkmossgreen: "#4a5d23", darkpastelblue: "#779ecb", - darkpastelgreen: "#03c03c", darkpastelpurple: "#966fd6", darkpastelred: "#c23b22", - darkpink: "#e75480", darkraspberry: "#872657", darkscarlet: "#560319", - darksienna: "#3c1414", darkspringgreen: "#177245", darktan: "#918151", - darktangerine: "#ffa812", darktaupe: "#483c32", darkterracotta: "#cc4e5c", - darkvanilla: "#d1bea8", dartmouthgreen: "#00693e", deeppuce: "#a95c68", - deeplilac: "#9955bb", deepmauve: "#d473d4", deeptaupe: "#7e5e60", - desert: "#c19a6b", desertsand: "#edc9af", dimgray: "#696969", - dodgerblue: "#1e90ff", dogwoodrose: "#d71868", dollarbill: "#85bb65", - drab: "#967117", dukeblue: "#00009c", earthyellow: "#e1a95f", - eggplant: "#614051", egghite: "#f0ead6", electricblue: "#7df9ff", - electriccrimson: "#ff003f", electricgreen: "#00ff00", electricindigo: "#6f00ff", - electriclime: "#ccff00", electricpurple: "#bf00ff", electricultramarine: "#3f00ff", - electricviolet: "#8f00ff", electricyellow: "#ffff33", emerald: "#50c878", - engineeringorange: "#be0032", etonblue: "#96c8a2", fallow: "#c19a6b", - falured: "#801818", fandango: "#b53389", fashionfuchsia: "#f400a1", - fawn: "#e5aa70", feldgrau: "#4d5d53", ferrarired: "#ff2800", - fielddrab: "#6c541e", fireenginered: "#ce2029", flame: "#e25822", - flamingopink: "#fc8eac", flavescent: "#f7e98e", flax: "#eedc82", + + // Extra + absolutezero: "#0048ba", acidgreen: "#b0bf1a", aero: "#7cb9e8", + aeroblue: "#c0e8d5", africanviolet: "#b284be", airforceblue: "#5d8aa8", + airsuperiorityblue: "#72a0c1", alabamacrimson: "#af002a", alloyorange: "#c46210", + almond: "#efdecd", amaranthdeep: "#9f2b68", amaranthpink: "#f19cbb", + amaranthpurple: "#ab274f", amazon: "#3b7a57", amber: "#ffbf00", + amethyst: "#9966cc", androidgreen: "#a4c639", antiflashwhite: "#f2f3f4", + antiquebrass: "#cd9575", antiquebronze: "#665d1e", antiquefern: "#8cb06c", + antiquefuchsia: "#915c83", antiqueruby: "#841b2d", antiquewhite: "#faebd7", + aoenglish: "#008000", applegreen: "#8db600", apricot: "#fbceb1", + arcticlime: "#d0ff14", armygreen: "#4b5320", arsenic: "#3b444b", + artichoke: "#8f9779", arylideyellow: "#e9d66b", ashgray: "#b2beb5", + asparaguscra: "#87a96b", atomictangerine: "#ff9966", aureolin: "#fdee00", + aurometalsaurus: "#6e7f80", avocado: "#568203", azure: "#007fff", + azurex11: "#f0ffff", babypowder: "#fefefa", babypink: "#f4c2c2", + babypuce: "#8c8180", babysbreath: "#8c9fa8", babysblue: "#89cff0", + babysblueeyes: "#a1caf1", babypurple: "#ca9bf7", babysapphire: "#8fd8d8", + babysilver: "#838996", bakerchocolate: "#5c3317", banana: "#ffe135", + bananamania: "#fae7b5", barbiepink: "#e0218a", barnred: "#7c0a02", + battleshipgrey: "#848482", bazaar: "#98777b", beaublue: "#bcd4e6", + beaver: "#9f8170", beige: "#f5f5dc", bigdip: "#1cac78", + bisque: "#ffe4c4", bistre: "#3d2b1f", bistrebrown: "#967117", + bittersweet: "#fe6f5e", bittersweetshimmer: "#bf4f51", blackbean: "#3d0c02", + blackcoral: "#54626f", blackleatherjacket: "#253529", blackolive: "#3b3c36", + blackshadows: "#bfafb2", blanchedalmond: "#ffebcd", blastoffbronze: "#a57164", + bleudefrance: "#318ce7", blizzardblue: "#ace5ee", blond: "#faf0be", + bloodred: "#660000", blue: "#0000ff", bluebell: "#a2a2d0", + bluegray: "#6699cc", bluegreen: "#0d98ba", bluesapphire: "#126180", + blueviolet: "#8a2be2", blueyonder: "#5072a7", blueberry: "#4f86f7", + bluebonnet: "#1c1cf0", blush: "#de5d83", bole: "#79443b", + bondiblue: "#0095b6", bone: "#e3dac9", boogerbuster: "#dde26a", + bostonuniversityred: "#cc0000", bottle: "#006a4e", boysenberry: "#873260", + brandeisblue: "#0070ff", brass: "#b5a642", brickred: "#cb4154", + brightgreen: "#66ff00", brightlavender: "#bf94e4", brightlilac: "#d891ef", + brightmaroon: "#c32148", brightnavyblue: "#1974d2", brightpink: "#ff007f", + brightturquoise: "#08e8de", brightube: "#d19fe8", brightyellow: "#ffaa1d", + brilliantazure: "#3399ff", brilliantlavender: "#f4bbff", brilliantrose: "#ff55a3", + brinkpink: "#fb607f", britishracinggreen: "#004225", bronze: "#cd7f32", + bronzeyellow: "#737000", brown: "#a52a2a", brownchocolate: "#664228", + browntraditional: "#964b00", brownweb: "#a52a2a", brownsugar: "#af6e4d", + brownyellow: "#cc9966", brunswickgreen: "#1b4d3e", bubblegum: "#ffc1cc", + bubbles: "#e7feff", buff: "#f0dc82", budgreen: "#7bb661", + bulgarianrose: "#480607", burgundy: "#800020", burlywood: "#deb887", + burnishedbrown: "#a17a74", burntalmond: "#b0725e", burntorange: "#cc5500", + burntsienna: "#e97451", burntumber: "#8a3324", byzantine: "#bd33a4", + byzantium: "#702963", cadmiumgreen: "#006b3c", cadmiumorange: "#ed872d", + cadmiumred: "#e30022", cadmiumyellow: "#fff600", cafeaulait: "#a67b5b", + cafenoir: "#4b3621", calpolypomonagreen: "#1e4d2b", cambridgeblue: "#a3c1ad", + camel: "#c19a6b", camouflagegreen: "#78866b", canary: "#ffff99", + canaryyellow: "#ffef00", candyapplered: "#ff0800", candypink: "#e4717a", + capri: "#00bfff", caputmortuum: "#592720", cardinal: "#c41e3a", + caribbeangreen: "#00cc99", carmine: "#960018", carminered: "#ff0038", + carnation: "#ffa6c9", carnationpink: "#ffa6c9", carnelian: "#b31b1b", + carolinalue: "#56a0d3", carrot: "#ed9121", castletongreen: "#00563f", + catalinablue: "#062a78", catawba: "#703642", cedarchest: "#c95a49", + ceil: "#92a1cf", celadon: "#ace1af", celadonblue: "#007ba7", + celadongreen: "#2f847c", celeste: "#b2ffff", celestialblue: "#4997d0", + ceramic: "#fcfff9", cerise: "#de3163", cerisepink: "#ec3b83", + cerulean: "#007ba7", ceruleanblue: "#2a52be", ceruleanfrost: "#6d9bc3", + cetaceanblue: "#001440", chamoisee: "#a0785a", champagne: "#f7e7ce", + charcoal: "#36454f", charlotte: "#a4dce6", charm: "#d0748b", + charmpink: "#e68fac", chartreuse: "#7fff00", cherry: "#de3163", + cherryblossompink: "#ffb7c5", chestnut: "#954535", chinapink: "#de6fa1", + chinarose: "#a8516e", chineseblack: "#141414", chineseblue: "#365194", + chinesebronze: "#cd8032", chinesebrown: "#ab381f", chinesegold: "#cc9900", + chinesegreen: "#d0db61", chineseorange: "#f37042", chinesepink: "#de70a1", + chinesepurple: "#720b98", chinesered: "#aa381e", chinesesilver: "#ccd0d6", + chineseviolet: "#856088", chinesewhite: "#e2e5de", chineseyellow: "#ffb200", + chocolate: "#7b3f00", chocolatetraditional: "#7b3f00", chocolateweb: "#d2691e", + christmasblue: "#2a8fbd", christmasbrown: "#5d2b2c", christmasgreen: "#3c8d0d", + christmasgold: "#caa906", christmasorange: "#ff6600", christmaspink: "#ffcccb", + christmaspurple: "#663399", christmasred: "#aa0114", christmassilver: "#e1dfe0", + christmasyellow: "#ffcc00", chromium: "#7f8e88", cinereous: "#98817b", + cinnabar: "#e34234", cinnamon: "#d2691e", citrine: "#e4d00a", + citron: "#9fa91f", claret: "#7f1734", classicrose: "#fbcce7", + cobaltblue: "#0047ab", cocoabrown: "#d2691e", coconut: "#965a3e", + coffee: "#6f4e37", columbiablue: "#c4d8e2", congopink: "#f88379", + coolblack: "#002e63", coolgrey: "#8c92ac", copper: "#b87333", + copperpenny: "#ad6f69", copperred: "#cb6d51", copperrose: "#996666", + coquelicot: "#ff3800", coral: "#ff7f50", corald: "#ff7f50", + coralpink: "#f88379", coralred: "#ff4040", cordovan: "#893f45", + corn: "#fbec5d", cornellred: "#b31b1b", cornflowerblue: "#6495ed", + cornsilk: "#fff8dc", cosmiccobalt: "#2e2d88", cosmiclatte: "#fff8e7", + coyotebrown: "#81613c", cottoncandy: "#ffbcd9", cream: "#fffdd0", + crimson: "#dc143c", crimsonred: "#990000", cultured: "#f5f5f5", + cyan: "#00ffff", cyanazure: "#4e82b4", cyanblue: "#1e4d8c", + cyancobalt: "#28589c", cyanblueazure: "#4682bf", cyberyellow: "#ffd300", + cyclamen: "#f56fa1", daffodil: "#ffff31", dandelion: "#f0e130", + darkblue: "#00008b", darkbluegray: "#666699", darkbrown: "#654321", + darkbrowntangelo: "#88654e", darkbyzantium: "#5d3954", darkcandyapple: "#a40000", + darkcerulean: "#08457e", darkchestnut: "#986960", darkcoral: "#cd5b45", + darkcyan: "#008b8b", darkelectricblue: "#536878", darkgold: "#b59410", + darkgoldenrod: "#b8860b", darkgrayx11: "#a9a9a9", darkgreen: "#006400", + darkgreenx11: "#013220", darkgunmetal: "#1f262a", darkimperial: "#00416a", + darkjungle: "#1a2421", darkkhaki: "#bdb76b", darklava: "#483c32", + darklavender: "#734f96", darkliver: "#534b4f", darkliverhorses: "#543d37", + darkmagenta: "#8b008b", darkmediumgray: "#a9a9a9", darkmidnight: "#003366", + darkmoss: "#4a5d23", darkolive: "#556b2f", darkorange: "#ff8c00", + darkorchid: "#9932cc", darkpastel: "#03c03c", darkpink: "#e75480", + darkpowder: "#003399", darkpuce: "#4f3a3c", darkpurple: "#301934", + darkraspberry: "#872657", darkred: "#8b0000", darksalmon: "#e9967a", + darkscarlet: "#560319", darkseagreen: "#8fbc8f", darksienna: "#3c1414", + darksky: "#8cbed6", darkslate: "#483d8b", darkspring: "#177245", + darktan: "#918151", darktangerine: "#ffa812", darktaupe: "#483c32", + darkterracotta: "#cc4e5c", darkturquoise: "#00ced1", darkvanilla: "#d1bea8", + darkviolet: "#9400d3", darkyellow: "#9b870c", dartmouth: "#00693e", + davysgrey: "#555555", debianred: "#d70a53", deepamethyst: "#9c8aa4", + deepaquamarine: "#40826d", deepcarmine: "#a9203e", deepcarminepink: "#ef3038", + deepcarrot: "#e9692c", deepcerise: "#da3287", deepchampagne: "#fad6a5", + deepchestnut: "#b94e48", deepcoffee: "#704241", deepfuchsia: "#c154c1", + deepgreen: "#056608", deepgreencyanturquoise: "#0e7c61", deepjungle: "#004b49", + deepkoamaru: "#333366", deeplemon: "#f5c71a", deeplilac: "#9955bb", + deepmagenta: "#cc00cc", deepmaroon: "#820000", deepmauve: "#d473d4", + deepmoss: "#355e3b", deeppeach: "#ffcba4", deeppink: "#ff1493", + deeppuce: "#a95c68", deepred: "#850101", deepruby: "#843f5b", + deepsaffron: "#ff9933", deepsky: "#00bfff", deepspacesparkle: "#4a646c", + deepspring: "#2e8b57", deeptaupe: "#7e5e60", deeptuscan: "#66424d", + deepviolet: "#330066", deer: "#ba8759", denim: "#1560bd", + desert: "#c19a6b", desertsand: "#edc9af", desire: "#ea3c53", + diamond: "#b9f2ff", dimgray: "#696969", dirt: "#9b7653", + dodgerblue: "#1e90ff", dogwood: "#f8b1cc", dollar: "#85bb65", + donkeybrown: "#664c28", drab: "#967117", duke: "#00009c", + duststorm: "#e5ccc9", dutchwhite: "#efdfbb", earth: "#e2a76f", + ebony: "#555d50", ecru: "#c2b280", eerieblack: "#1b1b1b", + eggplant: "#614051", eggshell: "#f0ead6", eggwhite: "#ffeaa7", + egyptian: "#1034a6", electric: "#7df9ff", electricblue: "#7df9ff", + electriccrimson: "#ff003f", electriccyan: "#00ffff", electricgreen: "#00ff00", + electricindigo: "#6f00ff", electriclavender: "#f4bbff", electriclime: "#ccff00", + electricpurple: "#bf00ff", electricultramarine: "#3f00ff", electricviolet: "#8f00ff", + electricyellow: "#ffff33", emerald: "#50c878", eminence: "#6c3082", + emperor: "#51454d", empire: "#00549e", empireyellow: "#f7d000", + enamelsapphire: "#126180", enamelturquoise: "#00a78e", english: "#b48395", + englishgreen: "#1b4d3e", englishlavender: "#b48395", englishred: "#ab4b52", + englishvermillion: "#cc474b", englishviolet: "#563c5c", eton: "#96c8a2", + eucalyptus: "#44d7a8", fallow: "#c19a6b", falured: "#801818", + fandango: "#b53389", fandangopink: "#de5285", fashion: "#f400a1", + fawn: "#e5aa70", feldgrau: "#4d5d53", feldspar: "#fdd5b1", + fern: "#71bc78", ferngreen: "#4f7942", ferrari: "#ff2800", + field: "#6c541e", fieryrose: "#ff5470", fire: "#b22222", + firebrick: "#b22222", fireenginered: "#ce2029", flame: "#e25822", + flamingo: "#fc8eac", flattery: "#6b4423", flavescent: "#f7e98e", + flax: "#eedc82", flirt: "#a2006d", floral: "#fffaf0", fluorescentorange: "#ffbf00", fluorescentpink: "#ff1493", fluorescentyellow: "#ccff00", - folly: "#ff004f", forestgreen: "#228b22", frenchbeige: "#a67b5b", - frenchblue: "#0072bb", frenchlilac: "#86608e", frenchrose: "#f64a8a", - fuchsiapink: "#ff77ff", fuchsiapurple: "#cc397b", fulvous: "#e48400", - fuzzywuzzy: "#cc6666" + folly: "#ff004f", forest: "#228b22", french: "#a67b5b", + frenchbeige: "#a67b5b", frenchbistre: "#856d4d", frenchblue: "#0072bb", + frenchfuchsia: "#fd3f92", frenchlilac: "#86608e", frenchlime: "#9efd38", + frenchmauve: "#d473d4", frenchpink: "#fd6c9e", frenchplum: "#811453", + frenchpuce: "#4e1609", frenchraspberry: "#c72c48", frenchrose: "#f64a8a", + frenchsky: "#77b5fe", frenchviolet: "#8806ce", frenchwine: "#ac1e44", + freshair: "#a6e7ff", fuchsia: "#ff00ff", fuchsiapink: "#ff77ff", + fuchsiapurple: "#cc397b", fuchsiarose: "#c74375", fulvous: "#e48400", + fuzzy: "#cc6666" }; function colorPickerChange() { @@ -1015,7 +1115,7 @@ function hexInputChange() { errorText.textContent = ''; validColorDisplay.innerHTML = `
${finalColor}
`; } else { - errorText.textContent = 'Invalid color hex or name.'; + errorText.textContent = 'Invalid color HEX or name.'; validColorDisplay.innerHTML = ''; } } From e9c4449d19bb4f48dc3885a5a91be2d5df0262f8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:55:12 +0300 Subject: [PATCH 0690/1179] Update color.md --- src/tools/color.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 0a15ba12377..931f7b3689a 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -76,6 +76,7 @@ margin-left: -1.6rem; margin-top: -2.5rem; display: flex; + text-shadow: 0px 0px 5px rgb(0 0 0 / 100%); } @@ -112,4 +113,4 @@ Here are all the functions related to hex colors. - [`$userBannerColor[]`](../bdscript/userBannerColor.md) **CHECK**: -- [`$isValidHex[]`](../bdscript/isValidHex.md) \ No newline at end of file +- [`$isValidHex[]`](../bdscript/isValidHex.md) From c0d1c0cc29f4e059fc40708a7b1dd1272726578f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 22:09:57 +0300 Subject: [PATCH 0691/1179] Update addSection.md --- src/bdscript/addSection.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bdscript/addSection.md b/src/bdscript/addSection.md index 274ec477d4c..e1d36aafa60 100644 --- a/src/bdscript/addSection.md +++ b/src/bdscript/addSection.md @@ -7,7 +7,7 @@ Adds a section to the message. ## Syntax ``` -$addSection[Section name] +$addSection[Section name;(Container name)] ``` ```admonish fail title="It's important!" @@ -20,6 +20,8 @@ The section must contain all [section components](#section-components), otherwis You can't have multiple sections and [containers](./addContainer.md) **with the same name** in one message. So for example, you can’t have two sections with the name set to `section`. ``` +- `Container name` `(Type: String || Flag: Optional)`: To which [container body](./addContainer.md) should the section be attached. + ## Section Components ```admonish warning title="Limit" Only 3 components can be added to the section. From 7df2d7afeabdf45183bc97858ed7390dcd75ed4b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 22:13:45 +0300 Subject: [PATCH 0692/1179] Update timestamp.md --- src/tools/timestamp.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index e00803d90f3..f63348bb2ad 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -1,17 +1,17 @@ # Timestamp Converter Here you can manage UnixTime for your commands. From 508f6708ebc957107b403cbe8e5775edf1832b82 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 22:44:49 +0300 Subject: [PATCH 0697/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index f60fe0ecab8..13472d6a613 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -116,7 +116,7 @@ The timezone selected on your device is used. ```
-

Timezone

+

Zone

Specify the timezone you want to use for calculating time.

From f0359dca122efe87f662b2f0a8e0ed635c64d1fc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 22:57:12 +0300 Subject: [PATCH 0698/1179] Update playground.js --- src/theme/playground.js | 126 +++++++++++++++++++++++++++++----------- 1 file changed, 92 insertions(+), 34 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 8ca7ee49af9..f84fcfee99e 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1124,6 +1124,7 @@ function expandHex(short) { + // Timestamp const datetimePicker = document.getElementById('datetimepicker'); @@ -1136,14 +1137,9 @@ const currentTimeEl = document.getElementById('current-time'); const timezoneInput = document.getElementById('timezone'); const timezoneError = document.querySelector('.timezone-error'); -console.log('timezoneInput:', timezoneInput); // Добавьте эту строку для отладки - -if (!timezoneInput) { - console.error('Element with id "timezone" not found'); -} - let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; let isTimezoneValid = true; +let clickCounters = {}; const now = new Date(); const year = now.getFullYear(); @@ -1158,17 +1154,12 @@ const currentUnixTime = Math.floor(now.getTime() / 1000); unixInput.value = currentUnixTime; function updateTimezone() { - if (!timezoneInput) { - console.error('timezoneInput is null'); - return; - } - const timezoneValue = timezoneInput.value.trim(); if (!timezoneValue) { currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; isTimezoneValid = true; - if (timezoneError) timezoneError.textContent = ''; + timezoneError.textContent = ''; updateDateFromUnix(); updateCurrentTime(); return; @@ -1184,11 +1175,11 @@ function updateTimezone() { currentTimezone = timezoneValue; isTimezoneValid = true; - if (timezoneError) timezoneError.textContent = ''; + timezoneError.textContent = ''; updateDateFromUnix(); updateCurrentTime(); } catch (error) { - if (timezoneError) timezoneError.textContent = 'Invalid timezone'; + timezoneError.textContent = 'Invalid timezone'; isTimezoneValid = false; currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; updateDateFromUnix(); @@ -1269,11 +1260,35 @@ function getCurrentTimeInTimezone() { } } +function getUnixTimeForDateInTimezone(year, month, day, hour, minute, second, timezone) { + try { + const dateString = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}T${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:${second.toString().padStart(2, '0')}`; + + if (timezone && timezone !== 'UTC') { + const dateInTimezone = new Date(dateString); + const dateInUTC = new Date(dateInTimezone.toLocaleString('en-US', { timeZone: timezone })); + + const utcDateString = dateInUTC.toISOString(); + return Math.floor(new Date(utcDateString).getTime() / 1000); + } else { + return Math.floor(new Date(dateString + 'Z').getTime() / 1000); + } + } catch (error) { + const dateString = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}T${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:${second.toString().padStart(2, '0')}Z`; + return Math.floor(new Date(dateString).getTime() / 1000); + } +} + +function getNextNewYearUnixTime() { + const now = new Date(); + const currentYear = now.getFullYear(); + const nextYear = currentYear + 1; + return getUnixTimeForDateInTimezone(nextYear, 1, 1, 0, 0, 0, currentTimezone); +} + function updateCurrentTime() { const timeInfo = getCurrentTimeInTimezone(); - if (currentTimeEl) { - currentTimeEl.innerHTML = `${timeInfo.dateString}
${timeInfo.unixTime}`; - } + currentTimeEl.innerHTML = `${timeInfo.dateString}
${timeInfo.unixTime}`; } function updateUnixTime() { @@ -1283,7 +1298,7 @@ function updateUnixTime() { const unixTime = Math.floor(selectedDate.getTime() / 1000); const dateString = formatDateInTimezone(selectedDate, currentTimezone); - if (unixTimeDisplay) unixTimeDisplay.textContent = unixTime; + unixTimeDisplay.textContent = unixTime; if (parseInt(unixInput.value) !== unixTime) { unixInput.value = unixTime; @@ -1300,7 +1315,7 @@ function updateDateFromUnix() { if (!isNaN(date.getTime())) { const dateString = formatDateInTimezone(date, currentTimezone); - if (dateDisplay) dateDisplay.textContent = dateString; + dateDisplay.textContent = dateString; const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); @@ -1315,11 +1330,11 @@ function updateDateFromUnix() { } } } else if (unixInput.value === '') { - if (dateDisplay) dateDisplay.textContent = 'Not set'; - if (dateInfo) dateInfo.textContent = ''; + dateDisplay.textContent = 'Not set'; + dateInfo.textContent = ''; } else { - if (dateDisplay) dateDisplay.textContent = 'Invalid timestamp'; - if (dateInfo) dateInfo.textContent = 'Please enter a valid Unix timestamp'; + dateDisplay.textContent = 'Invalid timestamp'; + dateInfo.textContent = 'Please enter a valid Unix timestamp'; } } @@ -1332,25 +1347,48 @@ function createQuickButtons() { quickButtons.className = 'time-buttons'; const times = [ - {label: 'Now', seconds: 0}, - {label: '1 hour ago', seconds: -3600}, - {label: '1 day ago', seconds: -86400}, - {label: '1 week ago', seconds: -604800}, - {label: 'New Year 2027', seconds: 1798761600} + {id: 'now', label: 'Now', type: 'now'}, + {id: 'hourAgo', label: '1 hour ago', type: 'relative', seconds: -3600}, + {id: 'dayAgo', label: '1 day ago', type: 'relative', seconds: -86400}, + {id: 'weekAgo', label: '1 week ago', type: 'relative', seconds: -604800}, + {id: 'hourLater', label: 'in 1 hour', type: 'relative', seconds: 3600}, + {id: 'dayLater', label: 'in 1 day', type: 'relative', seconds: 86400}, + {id: 'weekLater', label: 'in 1 week', type: 'relative', seconds: 604800}, + {id: 'newYear', label: 'Next New Year', type: 'newYear'} ]; times.forEach(time => { const button = document.createElement('button'); - button.textContent = time.label; + button.id = time.id; + + if (time.type === 'newYear') { + const now = new Date(); + const nextYear = now.getFullYear() + 1; + button.textContent = `New Year ${nextYear}`; + } else { + button.textContent = time.label; + } button.onclick = function() { + if (!clickCounters[time.id]) { + clickCounters[time.id] = 1; + } else { + clickCounters[time.id]++; + } + + const multiplier = clickCounters[time.id]; let unixTime; - if (time.seconds === 0) { + + if (time.type === 'now') { unixTime = Math.floor(Date.now() / 1000); - } else if (time.seconds > 0) { - unixTime = time.seconds; - } else { - unixTime = Math.floor(Date.now() / 1000) + time.seconds; + clickCounters[time.id] = 0; + } else if (time.type === 'relative') { + unixTime = Math.floor(Date.now() / 1000) + (time.seconds * multiplier); + } else if (time.type === 'newYear') { + const now = new Date(); + const nextYear = now.getFullYear() + multiplier; + button.textContent = `New Year ${nextYear}`; + unixTime = getUnixTimeForDateInTimezone(nextYear, 1, 1, 0, 0, 0, currentTimezone); } unixInput.value = unixTime; @@ -1360,6 +1398,26 @@ function createQuickButtons() { quickButtons.appendChild(button); }); + const resetButton = document.createElement('button'); + resetButton.textContent = 'Reset counters'; + resetButton.onclick = function() { + for (const key in clickCounters) { + clickCounters[key] = 0; + } + + const newYearButton = document.getElementById('newYear'); + if (newYearButton) { + const now = new Date(); + const nextYear = now.getFullYear() + 1; + newYearButton.textContent = `New Year ${nextYear}`; + } + + unixInput.value = Math.floor(Date.now() / 1000); + updateDateFromUnix(); + }; + + quickButtons.appendChild(resetButton); + unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); } From 7ea82b90db00ac6d38df33a273e1dae9268fcb71 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 23:05:21 +0300 Subject: [PATCH 0699/1179] Update playground.js --- src/theme/playground.js | 117 ++++++++++++++++++++++++++++++++++------ 1 file changed, 100 insertions(+), 17 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index f84fcfee99e..2afa0940f83 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1140,6 +1140,7 @@ const timezoneError = document.querySelector('.timezone-error'); let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; let isTimezoneValid = true; let clickCounters = {}; +let relativeOffset = 0; const now = new Date(); const year = now.getFullYear(); @@ -1260,30 +1261,67 @@ function getCurrentTimeInTimezone() { } } -function getUnixTimeForDateInTimezone(year, month, day, hour, minute, second, timezone) { +function getUnixTimeForNewYear(year, timezone) { try { - const dateString = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}T${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:${second.toString().padStart(2, '0')}`; + const dateString = `${year}-01-01T00:00:00`; - if (timezone && timezone !== 'UTC') { - const dateInTimezone = new Date(dateString); - const dateInUTC = new Date(dateInTimezone.toLocaleString('en-US', { timeZone: timezone })); + if (timezone) { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + hour12: false + }); - const utcDateString = dateInUTC.toISOString(); - return Math.floor(new Date(utcDateString).getTime() / 1000); + const date = new Date(dateString); + const formatted = formatter.format(date); + + const adjustedDate = new Date(formatted); + return Math.floor(adjustedDate.getTime() / 1000); } else { return Math.floor(new Date(dateString + 'Z').getTime() / 1000); } } catch (error) { - const dateString = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}T${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:${second.toString().padStart(2, '0')}Z`; - return Math.floor(new Date(dateString).getTime() / 1000); + return Math.floor(new Date(`${year}-01-01T00:00:00Z`).getTime() / 1000); } } -function getNextNewYearUnixTime() { - const now = new Date(); - const currentYear = now.getFullYear(); - const nextYear = currentYear + 1; - return getUnixTimeForDateInTimezone(nextYear, 1, 1, 0, 0, 0, currentTimezone); +function getUnixTimeForNextDay(timezone) { + try { + const now = new Date(); + const tomorrow = new Date(now); + tomorrow.setDate(tomorrow.getDate() + 1); + tomorrow.setHours(0, 0, 0, 0); + + if (timezone) { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + hour12: false + }); + + const formatted = formatter.format(tomorrow); + const adjustedDate = new Date(formatted); + return Math.floor(adjustedDate.getTime() / 1000); + } else { + tomorrow.setUTCHours(0, 0, 0, 0); + return Math.floor(tomorrow.getTime() / 1000); + } + } catch (error) { + const tomorrow = new Date(); + tomorrow.setDate(tomorrow.getDate() + 1); + tomorrow.setHours(0, 0, 0, 0); + return Math.floor(tomorrow.getTime() / 1000); + } } function updateCurrentTime() { @@ -1354,6 +1392,7 @@ function createQuickButtons() { {id: 'hourLater', label: 'in 1 hour', type: 'relative', seconds: 3600}, {id: 'dayLater', label: 'in 1 day', type: 'relative', seconds: 86400}, {id: 'weekLater', label: 'in 1 week', type: 'relative', seconds: 604800}, + {id: 'newDay', label: 'Next day', type: 'newDay'}, {id: 'newYear', label: 'Next New Year', type: 'newYear'} ]; @@ -1365,6 +1404,8 @@ function createQuickButtons() { const now = new Date(); const nextYear = now.getFullYear() + 1; button.textContent = `New Year ${nextYear}`; + } else if (time.type === 'newDay') { + button.textContent = time.label; } else { button.textContent = time.label; } @@ -1378,17 +1419,26 @@ function createQuickButtons() { const multiplier = clickCounters[time.id]; let unixTime; + let baseTime = Math.floor(Date.now() / 1000) + relativeOffset; if (time.type === 'now') { unixTime = Math.floor(Date.now() / 1000); - clickCounters[time.id] = 0; + relativeOffset = 0; + for (const key in clickCounters) { + if (key !== 'newDay' && key !== 'newYear') { + clickCounters[key] = 0; + } + } } else if (time.type === 'relative') { - unixTime = Math.floor(Date.now() / 1000) + (time.seconds * multiplier); + relativeOffset += time.seconds; + unixTime = Math.floor(Date.now() / 1000) + relativeOffset; } else if (time.type === 'newYear') { const now = new Date(); const nextYear = now.getFullYear() + multiplier; button.textContent = `New Year ${nextYear}`; - unixTime = getUnixTimeForDateInTimezone(nextYear, 1, 1, 0, 0, 0, currentTimezone); + unixTime = getUnixTimeForNewYear(nextYear, currentTimezone); + } else if (time.type === 'newDay') { + unixTime = getUnixTimeForNextDay(currentTimezone) + (86400 * (multiplier - 1)); } unixInput.value = unixTime; @@ -1401,6 +1451,7 @@ function createQuickButtons() { const resetButton = document.createElement('button'); resetButton.textContent = 'Reset counters'; resetButton.onclick = function() { + relativeOffset = 0; for (const key in clickCounters) { clickCounters[key] = 0; } @@ -1418,6 +1469,38 @@ function createQuickButtons() { quickButtons.appendChild(resetButton); + const counterDisplay = document.createElement('div'); + counterDisplay.id = 'counter-display'; + counterDisplay.style.marginTop = '10px'; + counterDisplay.style.fontSize = '14px'; + counterDisplay.style.color = '#666'; + quickButtons.appendChild(counterDisplay); + + function updateCounterDisplay() { + let displayText = 'Counters: '; + const activeCounters = []; + + for (const key in clickCounters) { + if (clickCounters[key] > 0) { + activeCounters.push(`${key}: ${clickCounters[key]}`); + } + } + + if (activeCounters.length > 0) { + displayText += activeCounters.join(', '); + } else { + displayText += 'none'; + } + + if (relativeOffset !== 0) { + displayText += ` | Total offset: ${relativeOffset} seconds`; + } + + counterDisplay.textContent = displayText; + } + + setInterval(updateCounterDisplay, 100); + unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); } From ee22d3c852b47c300997093692920b4b2b044cc9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 23:11:37 +0300 Subject: [PATCH 0700/1179] Update timestamp.md --- src/tools/timestamp.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 13472d6a613..11a44398da4 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -107,6 +107,11 @@ input { margin-top: 20px; transition: 0.3s; } +.timezone-error { + color: #dc3545; + font-size: 12px; + min-height: 16px; +} Here you can manage UnixTime for your commands. From fc47bbe6163576a288450b1b108b73f8fc378e96 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 23:17:36 +0300 Subject: [PATCH 0701/1179] Update timestamp.md --- src/tools/timestamp.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 11a44398da4..3cb2d37394a 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -149,6 +149,14 @@ The timezone selected on your device is used.
+
+

Timer

+

This shows when UnixTime will be

+
+ Loading... +
+
+
From 4f74edb41bea5ebfead9a9680a6d904382ecee64 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 23:19:17 +0300 Subject: [PATCH 0702/1179] Update playground.js --- src/theme/playground.js | 81 +++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 32 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 2afa0940f83..d6c859cb53d 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1136,6 +1136,7 @@ const dateInfo = document.getElementById('date-info'); const currentTimeEl = document.getElementById('current-time'); const timezoneInput = document.getElementById('timezone'); const timezoneError = document.querySelector('.timezone-error'); +const timerDisplay = document.getElementById('timer-display'); let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; let isTimezoneValid = true; @@ -1324,9 +1325,53 @@ function getUnixTimeForNextDay(timezone) { } } +function formatTimeDifference(timestamp) { + const now = Math.floor(Date.now() / 1000); + const diff = timestamp - now; + const absDiff = Math.abs(diff); + + if (absDiff < 60) { + return diff >= 0 ? `in ${absDiff} second${absDiff !== 1 ? 's' : ''}` : `${absDiff} second${absDiff !== 1 ? 's' : ''} ago`; + } + + const years = Math.floor(absDiff / 31536000); + const months = Math.floor((absDiff % 31536000) / 2592000); + const days = Math.floor((absDiff % 2592000) / 86400); + const hours = Math.floor((absDiff % 86400) / 3600); + const minutes = Math.floor((absDiff % 3600) / 60); + const seconds = absDiff % 60; + + const parts = []; + + if (years > 0) parts.push(`${years} year${years !== 1 ? 's' : ''}`); + if (months > 0) parts.push(`${months} month${months !== 1 ? 's' : ''}`); + if (days > 0) parts.push(`${days} day${days !== 1 ? 's' : ''}`); + if (hours > 0) parts.push(`${hours} hour${hours !== 1 ? 's' : ''}`); + if (minutes > 0) parts.push(`${minutes} minute${minutes !== 1 ? 's' : ''}`); + if (seconds > 0) parts.push(`${seconds} second${seconds !== 1 ? 's' : ''}`); + + if (parts.length === 0) { + return diff >= 0 ? 'now' : 'just now'; + } + + const timeString = parts.join(', '); + return diff >= 0 ? `in ${timeString}` : `${timeString} ago`; +} + +function updateTimerDisplay() { + const timestamp = parseInt(unixInput.value); + + if (!isNaN(timestamp)) { + timerDisplay.textContent = formatTimeDifference(timestamp); + } else { + timerDisplay.textContent = 'Invalid timestamp'; + } +} + function updateCurrentTime() { const timeInfo = getCurrentTimeInTimezone(); currentTimeEl.innerHTML = `${timeInfo.dateString}
${timeInfo.unixTime}`; + updateTimerDisplay(); } function updateUnixTime() { @@ -1370,10 +1415,14 @@ function updateDateFromUnix() { } else if (unixInput.value === '') { dateDisplay.textContent = 'Not set'; dateInfo.textContent = ''; + timerDisplay.textContent = 'Not set'; } else { dateDisplay.textContent = 'Invalid timestamp'; dateInfo.textContent = 'Please enter a valid Unix timestamp'; + timerDisplay.textContent = 'Invalid timestamp'; } + + updateTimerDisplay(); } window.updateTimezone = updateTimezone; @@ -1469,38 +1518,6 @@ function createQuickButtons() { quickButtons.appendChild(resetButton); - const counterDisplay = document.createElement('div'); - counterDisplay.id = 'counter-display'; - counterDisplay.style.marginTop = '10px'; - counterDisplay.style.fontSize = '14px'; - counterDisplay.style.color = '#666'; - quickButtons.appendChild(counterDisplay); - - function updateCounterDisplay() { - let displayText = 'Counters: '; - const activeCounters = []; - - for (const key in clickCounters) { - if (clickCounters[key] > 0) { - activeCounters.push(`${key}: ${clickCounters[key]}`); - } - } - - if (activeCounters.length > 0) { - displayText += activeCounters.join(', '); - } else { - displayText += 'none'; - } - - if (relativeOffset !== 0) { - displayText += ` | Total offset: ${relativeOffset} seconds`; - } - - counterDisplay.textContent = displayText; - } - - setInterval(updateCounterDisplay, 100); - unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); } From fe21f52d29908373f040487d2420dca8db3f7b3b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 23:44:28 +0300 Subject: [PATCH 0703/1179] Update timestamp.md --- src/tools/timestamp.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 3cb2d37394a..4dc03190109 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -121,17 +121,17 @@ The timezone selected on your device is used. ```
-

Zone

-

Specify the timezone you want to use for calculating time.

- +

Timezone

+

Select timezone for time calculations

+
-

Date to Unix Time

-

Date:

+

Date to Unix Timestamp

+

Select a date and time:

-

Unix Timestamp:

+

Unix timestamp:

0
@@ -139,10 +139,10 @@ The timezone selected on your device is used.
-

Unix Time to Date

-

Unix Timestamp:

+

Unix Timestamp to Date

+

Enter Unix timestamp:

-

Date and Time:

+

Date and time:

Not set
@@ -150,8 +150,8 @@ The timezone selected on your device is used.
-

Timer

-

This shows when UnixTime will be

+

Time Remaining

+

Time until selected Unix timestamp:

Loading...
From a70060440b3b67abeb14a8ccbaf2343cc00f8708 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 23:47:00 +0300 Subject: [PATCH 0704/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 4dc03190109..8cb1b8968d3 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -123,7 +123,7 @@ The timezone selected on your device is used.

Timezone

Select timezone for time calculations

- +
From 23328294bcbb9dd99f24a770098689fc0b265eec Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 11 Jan 2026 23:47:47 +0300 Subject: [PATCH 0705/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 8cb1b8968d3..58aff55fcd6 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -121,7 +121,7 @@ The timezone selected on your device is used. ```
-

Timezone

+

Time zone

Select timezone for time calculations

From 82eb1255dc5c32effb669b0e8b829c0e2482b1d6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 12 Jan 2026 16:47:37 +0300 Subject: [PATCH 0706/1179] Update chrome.css --- src/theme/css/chrome.css | 559 --------------------------------------- 1 file changed, 559 deletions(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 843a242df04..23bf16ec493 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1010,565 +1010,6 @@ ul#searchresults span.teaser em { -webkit-animation-timing-function: ease-in; } -/* Tools Editor */ -#stats-container p, #another-info p { - transition: .4s; - display: inline-block; - margin-right: 7.5px; - background-color: var(--color3); - padding: 5px; - font-size: 1.5rem; - border-radius: 10px; - margin-top: -.5rem; - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); -} - -#stats-container span { - font-weight: bold; -} - -#stats-container p:hover, #another-info p:hover { - transform: scale(1.1); - border-radius: 8px; - border-width: 1px; - transition: .4s; -} - -#stats-container, #another-info { - margin-top: 2rem; - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - flex-wrap: wrap; -} - -#stats-container { - margin-bottom: 1rem; -} - -#another-info { - margin-top: 1.25rem; - margin-bottom: -1rem; -} - -#editor, #name { - width: 96%; - font-size: 1.5rem; - min-height: 1.3rem; - max-height: 100em; - border-radius: 10px; - border-width: 0; - color: #bbb; - background: hsl(0deg 0% 100% / 7%); - padding: 7px; - font-size: 1.5rem; - margin: -2rem auto; - display: block; - outline: none; -} - -#editor { - height: 40rem; - resize: vertical; -} - -#name { - white-space: nowrap; - overflow: auto; - scrollbar-width: none; - -ms-overflow-style: none; - height: 1.7rem; - margin-bottom: 2rem; - margin-top: -1rem; - resize: none; -} - -#scriptType { - margin-top: -1.5rem; -} - -#text-editorui { - user-select: none; - -webkit-user-select: none; - margin-top: 1rem; - margin-bottom: 1rem; - background-color: var(--color3); - padding: 10px; - border-radius: 10px; -} - -#text-editorui p { - user-select: none; - -webkit-user-select: none; - margin-bottom: -.5rem; - margin-top: .5rem; - font-size: 1rem; - color: #9e9e9e; -} - -#searchText, #replaceText { - background: hsl(0deg 0% 100% / 7%); - color: #bbb; - font-size: 1.5rem; - display: block; - outline: none; - border-radius: 10px; - border-width: 0; - width: 99.5%; - height: 3rem; -} - -#text-editorui button { - outline: none; - touch-action: manipulation; - -webkit-user-select: none; - user-select: none; - padding-left: 1rem; - padding-right: 1rem; - height: 4rem; - border: none; - border-radius: 10px; - cursor: pointer; - margin-top: -1rem !important; - font-size: 1.5rem; - margin: 0.25%; - color: #fff; - background: hsl(0deg 0% 100% / 7%); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); - transition: 0.2s; -} - -#text-editorui button:hover { - transform: scale(1.05); - border-radius: 8px; - border-width: 1px; - transition: 0.4s; -} - -#error-message { - margin-top: -1rem; - margin-bottom: 3rem; - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; -} - -#highlightedText span { - color: var(--color1); -} - -#highlightedText a { - color: white !important; -} - -#highlightedText { - overflow-x: auto; - color: #bbb; - font-size: 1.5rem; - border-radius: 10px; - border-width: 0; - padding: 10px; - height: 100%; - word-break: break-all; - background: hsl(0deg 0% 100% / 7%); -} - -#highlightedText p { - margin-top: -.3rem; - margin-bottom: .5rem; -} - -#highlightedText h1 { - display: inline; -} - -#highlightedText h2 { - display: inline; -} - -#highlightedText h3 { - display: inline; -} - -#highlightedText spoiler { - user-select: none; - -webkit-user-select: none; - background: #111111; - color: #111111; - padding-left: .25rem; - padding-right: .25rem; - cursor: pointer !important; -} - -#highlightedText spoiler.spoiler-active { - background: #2e2e2e94; - color: #ababab; - cursor: text !important; - user-select: auto; - -webkit-user-select: auto; -} - -#highlightedText quote::before { - content: ""; - margin-right: 5px; - border-radius: 10px; - border-style: solid; - border-width: 2px; - border-color: #535353; -} - -#highlightedText hgSCode { - background: #2a2a2a; - color: #919191; - padding-left: .3rem; - padding-right: .3rem; - border-style: solid; - border-width: 1px; - border-color: #4b4b4b; - border-radius: 5px; -} - -.line-number { - border-right-width: 2px; - color: hsl(0deg 0% 100% / 30%) !important; - border-color: hsl(0deg 0% 100% / 30%); - border-right-style: solid; - display: inline-block; - width: 4.2rem; - margin-right: 1rem; - white-space: nowrap; - -webkit-user-select: none; - user-select: none; -} - -.channel, .mention { - border-radius: 5px; - color: hsl(0deg 0% 100% / 50%) !important; - background-color: hsl(0deg 0% 100% / 10%) !important; - font-weight: bold; - padding: 2px; -} - -.timestamp { - color: #bbb !important; - background-color: hsl(0deg 0% 100% / 5%) !important; -} - -.hg-code { - border-radius: 5px; - border-width: 2px; - border-style: solid; - border-color: hsl(0deg 0% 100% / 10%) !important; - color: hsl(0deg 0% 100% / 40%) !important; - background-color: hsl(0deg 0% 100% / 5%) !important; - padding: 1px; - display: inline-block; -} - -.close-btn { - user-select: none; - -webkit-user-select: none; - outline: none; - transition: .3s; - color: hsl(0deg 0% 100% / 75%); ! important; - padding: 1px 7px; - border-color: hsl(0deg 0% 100% / 15%); - width: 25px; - border-radius: 60px; - cursor: pointer; -} - -.close-btn:hover { - transition: .3s; - background-color: hsl(0deg 0% 100% / 10%); - border-style: solid; - border-width: 1px; -} - -.scriptdiv { - position: relative; -} - -.scriptdiv button:hover { - color: var(--color1); - border-color: var(--color1); - border-radius: 9px; - opacity: 0.9; - transition: 0.2s; -} - -.scriptdiv button { - outline: none; - position: absolute; - top: 0.3rem; - user-select: none; - -webkit-user-select: none; - touch-action: manipulation; - outline: none; - color: #fff; - margin: 1.5px 5px; - padding: 5px; - cursor: pointer; - width: 3.2rem; - height: 3.2rem; - font-size: 1.5rem; - border-style: solid; - border-width: 1px; - border-radius: 10px; - border-color: #aeaeae; - background: rgb(255 255 255 / 10%); - opacity: 0.8; - transition: 0.2s; -} - -.scriptdiv button:nth-of-type(1) { - right: 4rem; -} - -.scriptdiv button:nth-of-type(2) { - right: 0.3rem; -} - -#error-message { - display: block !important; - text-align: center; -} - -#error-message button { - outline: none; - transition: .4s; - display: inline-block; - margin-right: 7.5px; - background-color: var(--color3); - padding: 1rem; - color: hsl(0deg 0% 100% / 70%);; - font-size: 1.5rem; - border-radius: 10px; - border: none; - border-width: .1px; - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); -} - -#error-message button:hover { - transition: .4s; - color: var(--color1); - border-style: solid; -} - -#nameScript { - position: relative; -} - -#nameScript span { - user-select: none; - -webkit-user-select: none; - position: absolute; - top: 50%; - right: 1.5rem; - transform: translateY(-50%); - color: #888; - font-size: 0.8em; -} - -@media (max-width: 950px) { - #nameScript span { - top: -35%; - } - - #nameScript textarea { - border-radius: 15px; - font-size: 2rem; - height: 2.75rem; - } -} - -#selectors { - outline: none; - user-select: none; - -webkit-user-select: none; - display: flex; - justify-content: center; - align-items: center; - gap: 10px; - margin-bottom: 1.5rem; - margin-top: -1rem; - flex-wrap: wrap; -} - -#selectors select { - cursor: pointer; - outline: none; - text-decoration: none; - touch-action: manipulation; - -webkit-tap-highlight-color: transparent; - width: 15rem; - padding: 8px 5px; - background: rgb(255 255 255 / 10%); - color: rgb(255 255 255 / 80%); - border-radius: 10px; - box-sizing: border-box; - border: 0; -} - -@media (max-width: 350px) { - #selectors select { - width: 85%; - } -} - -#selectors select option { - outline: none; - color: #d3d3d3; - background-color: var(--color3); -} - -#settings, #tips { - margin-top: 1rem; - background-color: var(--color3); - border-radius: 10px; - padding: 1rem; -} - -#tips em, #tips strong, #tips a { - display: block; -} - -#tips h1 { - margin-top: -2.25rem; -} - -#tips h2 { - margin-top: -1.9rem; -} - -#tips h3 { - margin-top: .1rem; -} - -#tips h3:hover { - border: 0; -} - -#settings summary, #text-editorui summary, #tips summary { - user-select: none; - -webkit-user-select: none; - outline: none; - background-color: var(--color3); - border-radius: 10px; - cursor: pointer; - padding: 0rem; - padding-bottom: .75rem; - margin-bottom: -.5rem; - margin-top: -.1rem; - font-size: 2.5rem; -} - -.setting-item { - display: flex; - align-items: center; - margin-bottom: 1rem; -} - -#settings .setting-item p { - flex: 1; - margin-right: 10px; - text-align: left; - word-wrap: break-word; - line-height: 1.4; -} - -#settings .setting-item button { - cursor: pointer; - outline: none; - transition: 0.2s; - width: 15rem; - padding: .75rem; - border-radius: 10px; - border: 0; - background: linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%)); - box-sizing: border-box; - color: rgb(255 255 255 / 90%); -} - -#settings .setting-item #textWrappingButton, #settings .setting-item #brokeLinksButton, #settings .setting-item #caseSensitiveButton { - background: linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%)); -} - -@media (max-width: 475px) { - .setting-item { - flex-direction: column; - align-items: flex-start; - } - - #settings .setting-item p { - text-align: center; - margin-right: 0; - margin-bottom: 0.5rem; - } - - #settings .setting-item button { - width: 100%; - } -} - -#settings .setting-item button:hover { - transform: scale(1.025); - transition: 0.2s; - color: #fff; -} - -#settings hr { - border: 0; - height: 1px; - background: hsl(0deg 0% 100% / 20%); - border-radius: 10px; - margin: 5px 0; -} - -.setting-item:last-child { - user-select: none; - -webkit-user-select: none; - margin-top: -2.25rem; - margin-bottom: -1.25rem; - display: flex; - justify-content: center; - text-align: center; - font-size: 1.3rem; -} - -#autocomplete { - white-space: normal; - width: auto; - margin-bottom: 3rem; - margin-top: -1.75rem; - display: block !important; - border-radius: 10px; - background: var(--color3) !important; - border-color: hsl(0deg 0% 100% / 10%) !important; -} - -#autocomplete span { - display: block; - color: hsl(0deg 0% 100% / 65%); - border-radius: 10px; - margin-bottom: .5rem; - cursor: pointer; - padding: .5rem; - width: 100%; - transition: 0.2s; -} - -#autocomplete span.selected, #autocomplete span:hover { - margin-left: .5rem; - border-left-color: var(--color1); - border-left-width: 2.5px; - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-left-style: solid; - transition: 0.2s; -} From a08c86ee32de07b104bbbd7bef08cc0aafc0632e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Mon, 12 Jan 2026 16:48:23 +0300 Subject: [PATCH 0707/1179] Update editor.md --- src/tools/editor.md | 559 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 559 insertions(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index b00fbb6f591..24295283968 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -2,6 +2,565 @@ Here you can use the basic editor features to write codes more conveniently. From 8d1307f857b5bd952decd890db55da02455757bd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 16:58:15 +0300 Subject: [PATCH 0750/1179] Update index.js --- src/theme/settings/index.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/theme/settings/index.js b/src/theme/settings/index.js index 4d89d9d3a6c..e84ebe15812 100644 --- a/src/theme/settings/index.js +++ b/src/theme/settings/index.js @@ -274,19 +274,21 @@ function updateColor() { // Color Settings const hue = colorSlider.value; const saturation = 80; - const lightness = (theme === "dark") ? 82 : 50; - const BackLightness = (theme === "dark") ? 75 : 8; + const lightness = (theme === "dark") ? 50 : 82; + const UILightness = (theme === "dark") ? 15 : 82; + const GradientLightness = (theme === "dark") ? 20 : 80; + const BackLightness = (theme === "dark") ? 8 : 75; // Creating cute HSL colors const color1 = `hsl(${hue}, ${saturation}%, ${lightness}%)`; const color2 = `hsl(${hue}, ${saturation}%, ${lightness - 20}%)`; - const color3 = `hsl(${hue}, ${saturation}%, 15%)`; + const color3 = `hsl(${hue}, ${saturation}%, ${UILightness}%)`; // Locked text gameplay if (isLocked) { if (document.body.style.background.includes("linear-gradient")) { - const colorGradient1 = `hsl(${hue}, ${saturation}%, 20%)`; - const colorGradient2 = `hsl(${hue}, ${saturation}%, 5%)`; + const colorGradient1 = `hsl(${hue}, ${saturation}%, ${GradientLightness}%)`; + const colorGradient2 = `hsl(${hue}, ${saturation}%, ${GradientLightness - 15}%)`; document.body.style.background = `linear-gradient(to bottom right, ${colorGradient1}, ${colorGradient2})`; updateJsonFile( "theme-bg", From c215f9c41539f052af12130ec0389420e150428a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 17:18:21 +0300 Subject: [PATCH 0751/1179] Update index.js --- src/theme/settings/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/theme/settings/index.js b/src/theme/settings/index.js index e84ebe15812..11d006572e9 100644 --- a/src/theme/settings/index.js +++ b/src/theme/settings/index.js @@ -274,10 +274,12 @@ function updateColor() { // Color Settings const hue = colorSlider.value; const saturation = 80; - const lightness = (theme === "dark") ? 50 : 82; + const TextSaturation = (theme === "dark") ? 100 : 50; + const lightness = (theme === "dark") ? 50 : 60; const UILightness = (theme === "dark") ? 15 : 82; const GradientLightness = (theme === "dark") ? 20 : 80; const BackLightness = (theme === "dark") ? 8 : 75; + const TextLightness = (theme === "dark") ? 90 : 50; // Creating cute HSL colors const color1 = `hsl(${hue}, ${saturation}%, ${lightness}%)`; @@ -299,7 +301,7 @@ function updateColor() { updateJsonFile("theme-bg", `hsl(${hue}, ${saturation}%, ${BackLightness}%)`); } setStatusBar(hue); - document.body.style.color = `hsl(${hue}, 100%, 90%)`; + document.body.style.color = `hsl(${hue}, ${TextSaturation}%, ${TextLightness}%)`; headers.forEach((head) => { head.style.color = document.body.style.color; }); From 71bc40cb304cbbd1198847f0c2e13ed6a80acd63 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 17:22:16 +0300 Subject: [PATCH 0752/1179] Update index.js --- src/theme/settings/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/settings/index.js b/src/theme/settings/index.js index 11d006572e9..1b73c9a715e 100644 --- a/src/theme/settings/index.js +++ b/src/theme/settings/index.js @@ -424,7 +424,8 @@ function resetTheme() { const colorSlider = document.getElementById("themeSlider"); colorSlider.value = 270; - + + updateJsonFile("theme-name", "dark"); setStatusBar(colorSlider.value); updateColor(); useBackground(); From 16e57538244037cd800924119d962e66250fdc78 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 18:31:49 +0300 Subject: [PATCH 0753/1179] Update timestamp.md --- src/tools/timestamp.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 05b0379d5b2..6fbf7cc37a3 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -32,7 +32,8 @@ label { input { color: #bbb; padding: 10px; - width: 93.5%; + width: 100%; + box-sizing: border-box; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; border-width: 0; From 45ea92b515da8c13ff25655e264512ba5a762453 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 18:36:52 +0300 Subject: [PATCH 0754/1179] Update color.md --- src/tools/color.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tools/color.md b/src/tools/color.md index 193fa14e3f2..3288b3f81da 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -1,6 +1,9 @@ # Color - -# 2026 - -## January -- Added `$addTextDisplay[]` -- Added `$addSeparator[]` -- Added `$addContainer[]` -- Added `$addSection[]` -- Added `$addThumbnail[]` -- Added `$addMediaGallery[]` -- Added `$addMediaGalleryItem[]` -- Added `$addActionRow[]` -- Added `$addButtonCV2[]` - -# 2025 - -## December -- Added "Sign out other sessions" button -- Smoother animations in the app -- Redesigned Premium Points shop -- A lot of app bug fixes -- HTTP Awaiting Limit: 5s > 35s -- Fixed `$ceil[]` -- Fixed `$floor[]` -- Fixed `$getLeaderboardPosition[]` -- AI Quota: 5000 > 10000 -- Log Quota: 1500 > 3000 -- Updated BDFD App icon for Android - -
Previous Updates - -## November -- Major improvements to hosting infrastructure -- Reworked bot status preview -- HTTP Awaiting Limit: 15s > 5s - -## October -- Added setting to disable code highlighting in the command editor - -## September -- Updated BDFD App icon for iOS 26 -- Reworked bot list - -## July -- BDScript bug fixes - -## February -- Fixed app crashing during premium points purchases - + + + +
+
+

2026

+

What new has been added?

+
+
+ +
+
+

January

+

Discord Components V2.0 Update

+ NEW +
+
    +
  • Added $addTextDisplay[]
  • +
  • Added $addSeparator[]
  • +
  • Added $addContainer[]
  • +
  • Added $addSection[]
  • +
  • Added $addThumbnail[]
  • +
  • Added $addMediaGallery[]
  • +
  • Added $addMediaGalleryItem[]
  • +
  • Added $addActionRow[]
  • +
  • Added $addButtonCV2[]
  • +
+
+ +# 2025 + +## December +- Added "Sign out other sessions" button +- Smoother animations in the app +- Redesigned Premium Points shop +- A lot of app bug fixes +- HTTP Awaiting Limit: 5s > 35s +- Fixed `$ceil[]` +- Fixed `$floor[]` +- Fixed `$getLeaderboardPosition[]` +- AI Quota: 5000 > 10000 +- Log Quota: 1500 > 3000 +- Updated BDFD App icon for Android + +
Previous Updates + +## November +- Major improvements to hosting infrastructure +- Reworked bot status preview +- HTTP Awaiting Limit: 15s > 5s + +## October +- Added setting to disable code highlighting in the command editor + +## September +- Updated BDFD App icon for iOS 26 +- Reworked bot list + +## July +- BDScript bug fixes + +## February +- Fixed app crashing during premium points purchases + ## January - Added `$afkChannelID` - Added `$afkTimeout[]` @@ -79,8 +94,8 @@ - Added `$threadMessageCount` - Added `$threadUserCount` - Added `$voiceUserLimit[]` - -
+ +
# 2024 @@ -789,8 +804,9 @@ ```admonish abstract title="Flowchart Changelog" If you want to see the BDScript changelog, [click here](./FLOWCHART_CHANGELOG.md). -``` - -```admonish tip -If you want to access this changelog externally, we have a [JSON version](https://raw.githubusercontent.com/NilPointer-Software/bdfd-wiki/dev/external/CHANGELOG.json) of the changelog to which you can send a GET request and work with a JSON document further. ``` + +```admonish tip +If you want to access this changelog externally, we have a [JSON version](https://raw.githubusercontent.com/NilPointer-Software/bdfd-wiki/dev/external/CHANGELOG.json) of the changelog to which you can send a GET request and work with a JSON document further. +``` + From 4616ac050996e522d112f87969a8786813ec8a4c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 21:08:01 +0300 Subject: [PATCH 0763/1179] Update playground.js --- src/theme/playground.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index e06de032d82..462052c7130 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1149,7 +1149,9 @@ const day = String(now.getDate()).padStart(2, '0'); const hours = String(now.getHours()).padStart(2, '0'); const minutes = String(now.getMinutes()).padStart(2, '0'); -datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; +if (datetimePicker) { + datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; +} const currentUnixTime = Math.floor(now.getTime() / 1000); unixInput.value = currentUnixTime; @@ -1531,3 +1533,4 @@ document.addEventListener('DOMContentLoaded', function() { + From 707b968c9a35598ff7348052b35569564ae7b11c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 21:42:59 +0300 Subject: [PATCH 0764/1179] Update apply-settings.js --- src/theme/settings/apply-settings.js | 53 +++++++++++++++------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/src/theme/settings/apply-settings.js b/src/theme/settings/apply-settings.js index 24fbc5552c1..1a850572a9b 100644 --- a/src/theme/settings/apply-settings.js +++ b/src/theme/settings/apply-settings.js @@ -230,29 +230,22 @@ function applySettings() { data ??= defaultData; const mainHue = data["theme-main"]; // Мяу + const theme = data["theme-name"] || "dark"; // Гав + const back = data["theme-bg"] - let setSaturation; - let setLightness; - let set3Saturation; - let set3Lightness; - - if (data["theme-text"] === "rgb(0, 0, 0)") { - setSaturation = 60; - setLightness = 90; - set3Saturation = 60; - set3Lightness = 70; - } else { - setSaturation = 80; - setLightness = 50; - set3Saturation = 80; - set3Lightness = 15; - } + const saturation = 80; + const TextSaturation = (theme === "dark") ? 100 : 50; + const lightness = (theme === "dark") ? 50 : 60; + const UILightness = (theme === "dark") ? 15 : 82; + const GradientLightness = (theme === "dark") ? 20 : 80; + const BackLightness = (theme === "dark") ? 8 : 75; + const TextLightness = (theme === "dark") ? 90 : 50; + const SearchLightness = (theme === "dark") ? 20 : 70; - const colorTheme1 = `hsl(${mainHue}, ${setSaturation}%, ${setLightness}%)`; - const colorTheme2 = `hsl(${mainHue}, ${setSaturation}%, ${ - setLightness - 20 - }%)`; - const colorTheme3 = `hsl(${mainHue}, ${set3Saturation}%, ${set3Lightness}%)`; + // Creating cute HSL colors + const colorTheme1 = `hsl(${mainHue}, ${saturation}%, ${lightness}%)`; + const colorTheme2 = `hsl(${mainHue}, ${saturation}%, ${lightness - 20}%)`; + const colorTheme3 = `hsl(${mainHue}, ${saturation}%, ${UILightness}%)`; const html = document.querySelector("html"); @@ -269,7 +262,7 @@ function applySettings() { document.body.style.background = data["theme-bg"]; document.body.style.color = data["theme-text"]; document.documentElement.style.scrollbarColor = - `hsl(${mainHue}, 70%, 25%)` + `hsl(${mainHue}, 80%, 8%)`; + `hsl(${hue}, 70%, 25%)` + `hsl(${mainHue}, ${saturation}%, ${BackLightness}%)`; sidePages.forEach((page) => { page.style.color = document.body.style.color; @@ -282,7 +275,7 @@ function applySettings() { nextPage.style.background = `hsl(${mainHue}, 45%, 25%)`; } if (searchBar) { - searchBar.style.background = `hsl(${mainHue}, 60%, 20%)`; + searchBar.style.background = `hsl(${mainHue}, 60%, ${SearchLightness}%)`; searchBar.style.color = document.body.style.color; } if (bdsCode) { @@ -293,16 +286,28 @@ function applySettings() { head.style.color = document.body.style.color; }); + if (back === "rgb(0, 0, 0)") { + document.body.style.background = `#000`; + document.documentElement.style.scrollbarColor = `#fff` + `#000`; + } else if (back === "rgb(255, 255, 255)") { + document.body.style.background = `#fff`; + document.documentElement.style.scrollbarColor = `#000` + `#fff`; + } + if (document.body.style.background == "#000") { document .querySelector('meta[name="theme-color"]') .setAttribute("content", `#000`); + } else if (document.body.style.background == "#fff") { + document + .querySelector('meta[name="theme-color"]') + .setAttribute("content", `#fff`); } else { document .querySelector('meta[name="theme-color"]') .setAttribute("content", `hsl(${mainHue}, 80%, 8%)`); } - + setDiscordTheme(data["discord-example-theme"]); } From c395455c690df08081cb9af07081c54f8964fcc3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 21:47:13 +0300 Subject: [PATCH 0765/1179] Update timestamp.md --- src/tools/timestamp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 0b1f6c5d59f..6c914cee52c 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -27,12 +27,12 @@ .converter-section p { margin-top: -15px; } -label { +.converter-section label { display: block; margin-bottom: 8px; color: #34495e; } -input { +.converter-section input { color: #bbb; padding: 10px; width: 100%; From e3702cda178deda9f3194a7083bc5c9b8e764ea8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 21:55:26 +0300 Subject: [PATCH 0766/1179] Update webhooks.md --- src/guides/general/webhooks.md | 123 ++++++++++++++++++++++++++------- 1 file changed, 98 insertions(+), 25 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index d1ea33f99f5..671e6349c10 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -43,6 +43,8 @@ You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../v ```$nomention $var[Webhook;$webhookCreate[$channelID;Secret]] Created and saved! +``` + ~~~ # $webhookSend @@ -62,52 +64,123 @@ $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookSend[$var[webhook];I'm the best webhook;Title;;It's description!;#000;;;;;;false] ``` +# $webhookDelete +Deletes the wehook. + +## Syntax +``` +$webhookDelete[Webhook URL] +``` + +### Parameters + +## Example +``` +$nomention +``` + +# $webhookAvatarURL +Changes the webhook's avatar. + +## Syntax +``` +$webhookAvatarURL[Webhook URL;Avatar URL] +``` + +### Parameters + +## Example +``` +$nomention +``` + +# $webhookUsername +Changes the webhook's username. + +## Syntax +``` +$webhookUsername[Webhook URL;Username] +``` + +### Parameters + +## Example +``` +$nomention +``` + +# $webhookTitle +Adds title to the webhook. +## Syntax ``` -$webhookAvatarURL[webhookURL;avatarURL] +$webhookTitle[Webhook URL;Text] ``` -Changes the provided webhook's avatar. +### Parameters + +## Example ``` -$webhookUsername[webhookURL;username] +$nomention ``` -Changes the provided webhook's username. -## Webhook Messages -You can send messages via a webhook using the following functions: +# $webhookDescription +Adds description to the webhook. -- `$webhookTitle[webhookURL;text]` - Adds a title to the webhook embed. -- `$webhookDescription[webhookURL;text]` - Adds a description to the webhook embed. -- `$webhookFooter[webhookURL;text]` - Adds a footer to the webhook embed. -- `$webhookContent[webhookURL;text]` - The webhook non-embedded message content. -- `$webhookColor[webhookURL;colorHex]` - The color of the webhook embed. +## Syntax +``` +$webhookDescription[Webhook URL;Text] +``` -Alternatively, you can use `$webhookSend[]` for more options and condensement: +### Parameters + +## Example ``` -$webhookSend[webhookURL;content;title;titleURL;description;color;author;authorIcon;footer;footerIcon;thumbnail;image;addTimestamp (yes/no)] +$nomention ``` -> **Note:** Unneeded fields can be left empty. -## Deleting A Webhook +# $webhookFooter +Adds footer to the webhook. + +## Syntax ``` -$webhookDelete[webhookURL] +$webhookFooter[Webhook URL;Text] ``` -Deletes the provided webhook. + +### Parameters ## Example ``` $nomention -$var[webhookURL;$webhookCreate[$channelID;Cool Webhook;]] -$webhookContent[$var[webhookURL];Hello World!] -$c[❗️This example requires BDScript 2 enabled❗️] ``` -__Explaination:__ +# $webhookContent +Adds content to the webhook. -This code is storing the newly created webhook URL returned from `$webhookCreate[]` *(using $var[])*. Then, in the rest of the code `$var[webhookURL]` was called to get the webhook URL, which allowed the webhook message to send using `$webhookContent[]`. -> Remember, you need to be in BDScript 2 mode to use `$var[]`! +## Syntax +``` +$webhookContent[Webhook URL;Text] +``` + +### Parameters + +## Example +``` +$nomention +``` + +# $webhookColor +Adds color to the webhook. -__Output:__ +## Syntax +``` +$webhookContent[Webhook URL;Color] +``` + +### Parameters -![example](https://user-images.githubusercontent.com/69215413/128615389-30e9dadc-2cce-4868-af33-540f612fcf27.png) +## Example +``` +$nomention +``` From b25febda25db4c5be4025ea2c4ff415cc42a6114 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 21:59:38 +0300 Subject: [PATCH 0767/1179] Update color.md --- src/tools/color.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/color.md b/src/tools/color.md index 3288b3f81da..b7a75ae195e 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -109,6 +109,7 @@ Here are all the functions related to hex colors. - [`$embedSuppressErrors[]`](../bdscript/embedSuppressErrors.md) - [`$modifyRole[]`](../bdscript/modifyRole.md) - [`$sendEmbedMessage[]`](../bdscript/sendEmbedMessage.md) +- [`$webhookSend[]`](../bdscript/webhookSend.md) **GET**: - [`$getRoleColor[]`](../bdscript/getRoleColor.md) From 253d0b836fdeb849756c535092d4c74d55bac9e0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 22:13:59 +0300 Subject: [PATCH 0768/1179] Update apply-settings.js --- src/theme/settings/apply-settings.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/theme/settings/apply-settings.js b/src/theme/settings/apply-settings.js index 1a850572a9b..be04b56192e 100644 --- a/src/theme/settings/apply-settings.js +++ b/src/theme/settings/apply-settings.js @@ -277,6 +277,8 @@ function applySettings() { if (searchBar) { searchBar.style.background = `hsl(${mainHue}, 60%, ${SearchLightness}%)`; searchBar.style.color = document.body.style.color; + } else { + console.log('Error'); } if (bdsCode) { bdsCode.style.scrollbarColor = From f6dff427f19cc80523b7b85e922cec5c0a8bd4d4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 22:15:23 +0300 Subject: [PATCH 0769/1179] Update chrome.css --- src/theme/css/chrome.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 602fa551a54..c48c38c0b9f 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -620,6 +620,7 @@ mark.fade-out { height: 3rem; padding: 2%; font-size: 80%; + color: #fff; transition: box-shadow 300ms ease-in-out; border: 1px solid var(--color1); border-radius: 10px; @@ -1016,3 +1017,4 @@ ul#searchresults span.teaser em { + From 4cc97a684a327940c41987204fcb4f57acc99cf0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Tue, 13 Jan 2026 22:17:18 +0300 Subject: [PATCH 0770/1179] Update chrome.css --- src/theme/css/chrome.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index c48c38c0b9f..4b287806db6 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -637,7 +637,7 @@ mark.fade-out { font-size: 1.1em; text-align: center; padding: 18px 0 0 18px; - color: #fff; + color: var(--color1); } .searchresults-outer { @@ -1018,3 +1018,4 @@ ul#searchresults span.teaser em { + From 5b827ca5a209704c11ac8ade87f50592fc73b34e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 15:15:24 +0300 Subject: [PATCH 0771/1179] Update apply-settings.js --- src/theme/settings/apply-settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/settings/apply-settings.js b/src/theme/settings/apply-settings.js index be04b56192e..9dd8f0f596d 100644 --- a/src/theme/settings/apply-settings.js +++ b/src/theme/settings/apply-settings.js @@ -285,7 +285,7 @@ function applySettings() { `hsl(${mainHue}, 70%, 25%)` + colorTheme3; } headers.forEach((head) => { - head.style.color = document.body.style.color; + head.style.color = data["theme-text"]; }); if (back === "rgb(0, 0, 0)") { From 8814330abd9081bb06a6e46fd3748c709af9e4d6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 17:38:54 +0300 Subject: [PATCH 0772/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 6c914cee52c..fe68bfde181 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -34,7 +34,7 @@ } .converter-section input { color: #bbb; - padding: 10px; + padding: 2.25rem !important; width: 100%; box-sizing: border-box; background: hsl(0deg 0% 100% / 7%); From f03a87f9f0043dd8498b04075e27e18b30724c0c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 17:39:37 +0300 Subject: [PATCH 0773/1179] Update timestamp.md --- src/tools/timestamp.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index fe68bfde181..364a129326f 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -36,6 +36,7 @@ color: #bbb; padding: 2.25rem !important; width: 100%; + max-width: 100%; box-sizing: border-box; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; From 236792420b31c27cc96c83b5da794ea58f685af7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 17:40:22 +0300 Subject: [PATCH 0774/1179] Update apply-settings.js --- src/theme/settings/apply-settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/settings/apply-settings.js b/src/theme/settings/apply-settings.js index 9dd8f0f596d..fac5cf5f8dd 100644 --- a/src/theme/settings/apply-settings.js +++ b/src/theme/settings/apply-settings.js @@ -262,7 +262,7 @@ function applySettings() { document.body.style.background = data["theme-bg"]; document.body.style.color = data["theme-text"]; document.documentElement.style.scrollbarColor = - `hsl(${hue}, 70%, 25%)` + `hsl(${mainHue}, ${saturation}%, ${BackLightness}%)`; + `hsl(${mainHue}, 70%, 25%)` + `hsl(${mainHue}, ${saturation}%, ${BackLightness}%)`; sidePages.forEach((page) => { page.style.color = document.body.style.color; From eb4b704f2d1acaccb080c3e0f09e0341d0968cd9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 17:49:22 +0300 Subject: [PATCH 0775/1179] Update autocomplete.js --- src/theme/autocomplete.js | 116 ++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 60 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index dcfe80c70d7..2aa66690059 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -41,10 +41,10 @@ function autocomplete() { } function updateAutocomplete() { - if (!autocompleteEnabled) { - hideAutocomplete(); - return; - } + if (!autocompleteEnabled) { + hideAutocomplete(); + return; + } const inputText = textarea.value; const cursorPosition = textarea.selectionStart; let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); @@ -83,54 +83,52 @@ function autocomplete() { cursorInactiveTimeout = setTimeout(hideAutocomplete, 10000); } - function selectFunction(func,dollarIndex,cursorPosition,inputText) { - textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); - textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - hideAutocomplete(); - textarea.focus(); + function selectFunction(func,dollarIndex,cursorPosition,inputText) { + textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); + textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; + hideAutocomplete(); + textarea.focus(); } function handleArrowKeys(event) { - if (autocompleteOutput.children.length === 0) return; + if (autocompleteOutput.children.length === 0) return; if (event.key === 'ArrowDown') { event.preventDefault(); selectedIndex = Math.min(selectedIndex + 1, autocompleteOutput.children.length - 1); - } else if (event.key === 'ArrowUp') { event.preventDefault(); selectedIndex = Math.max(selectedIndex - 1, 0); } else if (event.key === 'Enter' && selectedIndex !== -1) { - event.preventDefault(); - const selectedFunction = autocompleteOutput.children[selectedIndex].textContent; - const inputText = textarea.value; - const cursorPosition = textarea.selectionStart; - let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); - selectFunction(selectedFunction,dollarIndex,cursorPosition,inputText); - return; - } - + event.preventDefault(); + const selectedFunction = autocompleteOutput.children[selectedIndex].textContent; + const inputText = textarea.value; + const cursorPosition = textarea.selectionStart; + let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); + selectFunction(selectedFunction,dollarIndex,cursorPosition,inputText); + return; + } highlightSelected(); } - function highlightSelected() { - Array.from(autocompleteOutput.children).forEach((child, index) => { - child.classList.toggle('selected', index === selectedIndex); - }); - } - - textarea.addEventListener('input', updateAutocomplete); - textarea.addEventListener('mouseup', updateAutocomplete); - textarea.addEventListener('keydown', event => { - if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Enter') { - handleArrowKeys(event); - } - }); + function highlightSelected() { + Array.from(autocompleteOutput.children).forEach((child, index) => { + child.classList.toggle('selected', index === selectedIndex); + }); + } + if (textarea) { + textarea.addEventListener('input', updateAutocomplete); + textarea.addEventListener('mouseup', updateAutocomplete); + textarea.addEventListener('keydown', event => { + if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Enter') { + handleArrowKeys(event); + } + }); textarea.addEventListener('blur', () => { - setTimeout(hideAutocomplete, 200); + setTimeout(hideAutocomplete, 200); }); - + } document.addEventListener('click', event => { if (!autocompleteOutput.contains(event.target) && event.target !== textarea) { @@ -176,15 +174,14 @@ function addTooltips() { } if (tooltipText) { - const { left, top } = textarea.getBoundingClientRect(); - const textareaStyle = window.getComputedStyle(textarea); - let lineHeight = parseInt(textareaStyle.lineHeight); - lineHeight = isNaN(lineHeight) ? 16 : lineHeight; - const paddingTop = parseInt(textareaStyle.paddingTop) || 0; - const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; - const x = left + cursor * 8; - const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 30; - + const { left, top } = textarea.getBoundingClientRect(); + const textareaStyle = window.getComputedStyle(textarea); + let lineHeight = parseInt(textareaStyle.lineHeight); + lineHeight = isNaN(lineHeight) ? 16 : lineHeight; + const paddingTop = parseInt(textareaStyle.paddingTop) || 0; + const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; + const x = left + cursor * 8; + const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 30; tooltip.style.left = `${x}px`; tooltip.style.top = `${y}px`; @@ -197,28 +194,27 @@ function addTooltips() { } function updateAutocompleteState() { - const textarea = document.getElementById('editor'); - const autocompleteOutput = document.getElementById('autocomplete'); + const textarea = document.getElementById('editor'); + const autocompleteOutput = document.getElementById('autocomplete'); if (!autocompleteEnabled) { - autocompleteOutput.innerHTML = ''; // Clear autocomplete - textarea.removeEventListener('input', updateAutocomplete); - textarea.removeEventListener('mouseup', updateAutocomplete); - document.getElementById('tooltip').style.display = 'none'; // Hide tooltip - textarea.removeEventListener('keyup',updateTooltip) - textarea.removeEventListener('mouseup',updateTooltip) + autocompleteOutput.innerHTML = ''; // Clear autocomplete + textarea.removeEventListener('input', updateAutocomplete); + textarea.removeEventListener('mouseup', updateAutocomplete); + document.getElementById('tooltip').style.display = 'none'; // Hide tooltip + textarea.removeEventListener('keyup',updateTooltip) + textarea.removeEventListener('mouseup',updateTooltip) } else { - textarea.addEventListener('input', updateAutocomplete); - textarea.addEventListener('mouseup', updateAutocomplete); - textarea.addEventListener('keyup', updateTooltip); - textarea.addEventListener('mouseup', updateTooltip); - + textarea.addEventListener('input', updateAutocomplete); + textarea.addEventListener('mouseup', updateAutocomplete); + textarea.addEventListener('keyup', updateTooltip); + textarea.addEventListener('mouseup', updateTooltip); } } document.addEventListener("DOMContentLoaded", function() { - autocomplete(); - addTooltips(); - updateAutocompleteState(); + autocomplete(); + addTooltips(); + updateAutocompleteState(); }); From 04ebd81ebefc8650d7487f4fbb653d5e7ed0a7c8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 17:55:02 +0300 Subject: [PATCH 0776/1179] Update color.md --- src/tools/color.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/tools/color.md b/src/tools/color.md index b7a75ae195e..d75bb888bd5 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -96,6 +96,13 @@ Here you can choose a color to use in your command.
#000000
+
+

Random Color

+

Generate a random color.

+ +
+
+ ## Functions Here are all the functions related to hex colors. From 9ab9506fa85694b19052ebd5ba45290a7fb8f0bb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 17:55:51 +0300 Subject: [PATCH 0777/1179] Update playground.js --- src/theme/playground.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/theme/playground.js b/src/theme/playground.js index 462052c7130..6da6dd6fc67 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1121,6 +1121,12 @@ function expandHex(short) { return short; } +function generateRandomColor() { + const randomColor = '#' + Math.floor(Math.random()*16777215).toString(16); + const randomColorResult = document.getElementById('randomColorResult'); + randomColorResult.style.background = randomColor; + randomColorResult.textContent = randomColor; + } @@ -1534,3 +1540,4 @@ document.addEventListener('DOMContentLoaded', function() { + From 96747cfec77ae6b608d1361a26ce186b166375ae Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 17:59:08 +0300 Subject: [PATCH 0778/1179] Update playground.js --- src/theme/playground.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 6da6dd6fc67..ff50182cc22 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1160,7 +1160,10 @@ if (datetimePicker) { } const currentUnixTime = Math.floor(now.getTime() / 1000); -unixInput.value = currentUnixTime; + +if (unixInput) { + unixInput.value = currentUnixTime; +} function updateTimezone() { const timezoneValue = timezoneInput.value.trim(); @@ -1541,3 +1544,4 @@ document.addEventListener('DOMContentLoaded', function() { + From 6b3bf14176ce282f6f2414060f74bb0873800495 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:02:19 +0300 Subject: [PATCH 0779/1179] Update editor.md --- src/tools/editor.md | 60 ++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 24295283968..6b7ad2d5461 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -172,15 +172,15 @@ Here you can use the basic editor features to write codes more conveniently. } #highlightedText h1 { - display: inline; + display: inline; } #highlightedText h2 { - display: inline; + display: inline; } #highlightedText h3 { - display: inline; + display: inline; } #highlightedText spoiler { @@ -194,11 +194,11 @@ Here you can use the basic editor features to write codes more conveniently. } #highlightedText spoiler.spoiler-active { - background: #2e2e2e94; - color: #ababab; - cursor: text !important; - user-select: auto; - -webkit-user-select: auto; + background: #2e2e2e94; + color: #ababab; + cursor: text !important; + user-select: auto; + -webkit-user-select: auto; } #highlightedText quote::before { @@ -364,15 +364,15 @@ Here you can use the basic editor features to write codes more conveniently. } @media (max-width: 950px) { - #nameScript span { - top: -35%; - } + #nameScript span { + top: -35%; + } - #nameScript textarea { - border-radius: 15px; - font-size: 2rem; - height: 2.75rem; - } + #nameScript textarea { + border-radius: 15px; + font-size: 2rem; + height: 2.75rem; + } } #selectors { @@ -389,18 +389,18 @@ Here you can use the basic editor features to write codes more conveniently. } #selectors select { - cursor: pointer; - outline: none; - text-decoration: none; - touch-action: manipulation; - -webkit-tap-highlight-color: transparent; - width: 15rem; - padding: 8px 5px; - background: rgb(255 255 255 / 10%); - color: rgb(255 255 255 / 80%); - border-radius: 10px; - box-sizing: border-box; - border: 0; + cursor: pointer; + outline: none; + text-decoration: none; + touch-action: manipulation; + -webkit-tap-highlight-color: transparent; + width: 15rem; + padding: 8px 5px; + background: rgb(255 255 255 / 10%); + color: rgb(255 255 255 / 80%); + border-radius: 10px; + box-sizing: border-box; + border: 0; } @media (max-width: 350px) { @@ -423,7 +423,7 @@ Here you can use the basic editor features to write codes more conveniently. } #tips em, #tips strong, #tips a { - display: block; + display: block; } #tips h1 { @@ -616,7 +616,7 @@ Here you can use the basic editor features to write codes more conveniently.

-
+

Regex is supported

From 54d82142c1aeb081d1c8782422b425ba667cbec7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:05:05 +0300 Subject: [PATCH 0780/1179] Update color.md --- src/tools/color.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/tools/color.md b/src/tools/color.md index d75bb888bd5..d0320b3760c 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -63,6 +63,33 @@ -webkit-user-select: none; user-select: none; } +#randomColorButton { + outline: none; + touch-action: manipulation; + -webkit-user-select: none; + user-select: none; + padding-left: 1rem; + padding-right: 1rem; + height: 4rem; + border: none; + border-radius: 10px; + cursor: pointer; + margin-top: -1rem !important; + margin-right: 1rem !important; + font-size: 1.5rem; + margin: 0.25%; + color: #fff; + background: hsl(0deg 0% 100% / 7%); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); + transition: 0.2s; +} + +#randomColorButton:hover { + transform: scale(1.05); + border-radius: 8px; + border-width: 1px; + transition: 0.2s; +} .error { color: #dc3545; font-size: 12px; From 82c0204f2e64ef68cd47165bbd3276cf7419edac Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:08:35 +0300 Subject: [PATCH 0781/1179] Update color.md --- src/tools/color.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index d0320b3760c..63453d5d6f8 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -113,21 +113,23 @@ Here you can choose a color to use in your command.
-

Color Picker

-

Select the color.

-
- - -
-
-
#000000
+

Color Picker

+

Select the color.

+
+ + +
+
+
#000000
-

Random Color

-

Generate a random color.

- -
+

Random Color

+

Generate a random color.

+
+ +
+
## Functions From f32db853703a577843a0871eb5b3fa39af3a32de Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:16:29 +0300 Subject: [PATCH 0782/1179] Update color.md --- src/tools/color.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/tools/color.md b/src/tools/color.md index 63453d5d6f8..8d734004285 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -63,6 +63,26 @@ -webkit-user-select: none; user-select: none; } +.random-result { + display: flex; + align-items: center; +} + +#randomColorResult { + padding: .9rem; + width: 100%; + border-radius: 10px; + margin-bottom: 1rem; + color: #fff; + font-weight: bold; + transition: .3s; +} + +#randomColorResult:hover { + color: #000; + opacity: 0.6; + transition: .3s; +} #randomColorButton { outline: none; touch-action: manipulation; From c9dc1802ef89d0381f0f5f8f208199bbac167428 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:26:24 +0300 Subject: [PATCH 0783/1179] Update color.md --- src/tools/color.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 8d734004285..6faad986ac0 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -72,7 +72,8 @@ padding: .9rem; width: 100%; border-radius: 10px; - margin-bottom: 1rem; + margin-top: -2.5rem !important; + margin-bottom: 0 !important; color: #fff; font-weight: bold; transition: .3s; @@ -94,6 +95,7 @@ border: none; border-radius: 10px; cursor: pointer; + margin-bottom: 1.5rem !important; margin-top: -1rem !important; margin-right: 1rem !important; font-size: 1.5rem; From 5b8cad2330f85a26a61e65247d7a488187ab0062 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:32:19 +0300 Subject: [PATCH 0784/1179] Update color.md --- src/tools/color.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tools/color.md b/src/tools/color.md index 6faad986ac0..09846b7658a 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -63,6 +63,10 @@ -webkit-user-select: none; user-select: none; } +.color-input::-webkit-color-swatch { + border-radius: 10px; + border-width: 0; +} .random-result { display: flex; align-items: center; From 82bf037692c80e93d698f2557218af8abffb7f62 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:40:27 +0300 Subject: [PATCH 0785/1179] Update addContainer.md --- src/bdscript/addContainer.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index 39012e4208a..f82acdd8d72 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -24,7 +24,11 @@ The container body must contain [container components](#container-components), o You can't have multiple containers and [sections](./addSection.md) **with the same name** in one message. So for example, you can’t have two containers with the name set to `Container1`. ``` -- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the container border color as. You can also use color integer number. +- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the container border color as. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to select the best color! +``` + - `Spoiler?` `(Type: Bool || Flag: Optional)`: Will the container have a spoiler effect? ## Container Components @@ -57,4 +61,4 @@ $addTextDisplay[Hello world!;Container1] ```admonish question title="What is this?" How [`$addTextDisplay[]`](./addTextDisplay.md) works? -``` \ No newline at end of file +``` From 01b361b28ca615a3aaf349137d855da6bbecea25 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:43:58 +0300 Subject: [PATCH 0786/1179] Update color.md --- src/bdscript/color.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/bdscript/color.md b/src/bdscript/color.md index da7cd97b0f4..c53926881df 100644 --- a/src/bdscript/color.md +++ b/src/bdscript/color.md @@ -7,7 +7,11 @@ $color[Color hex;(Index)] ``` ### Parameters -- `Color hex` `(Type: Color || Flag: Emptiable)`: The [color hex](https://htmlcolorcodes.com/color-picker) to set the embed border color as. You can also use color integer number. +- `Color hex` `(Type: Color || Flag: Emptiable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to select the best color! +``` + - `Index` `(Type: Integer || Flag: Optional)`: What embed the color border should belong to. The default is `1`. [(learn more)](../resources/embedIndexes.md) ## Example @@ -15,7 +19,7 @@ $color[Color hex;(Index)] $nomention $description[⬅️ That is the embed color border!] $color[#673ab7] -``` +``` ``` discord yaml - user_id: 729343563401265193 @@ -33,7 +37,8 @@ $color[#673ab7] description: ⬅️ That is the embed color border! color: "#673ab7" ``` - -```admonish question title="What is this?" -How [`$description[]`](./description.md) works? -``` \ No newline at end of file + + +```admonish question title="What is this?" +How [`$description[]`](./description.md) works? +``` From 8b8b21ef1559210a17787cdd6c87c30dec32406f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:44:47 +0300 Subject: [PATCH 0787/1179] Update colorRole.md --- src/bdscript/colorRole.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/bdscript/colorRole.md b/src/bdscript/colorRole.md index ae233a9fe6c..e2e535865be 100644 --- a/src/bdscript/colorRole.md +++ b/src/bdscript/colorRole.md @@ -7,7 +7,10 @@ $colorRole[Color hex] ``` ### Parameters -- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](https://htmlcolorcodes.com/color-picker) to change the mentioned role color to. +- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../tools/color.md) to change the mentioned role color to. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to select the best color! +``` ## Example ``` @@ -33,8 +36,9 @@ $colorRole[$noMentionMessage] ✅ Changed the role color of <@cool role> to #E11F0E! ``` \ -![example](https://user-images.githubusercontent.com/111157596/257056832-3040aa89-91ea-428e-b362-3ed075cf620e.png) - -```admonish question title="What is this?" -How [`$noMentionMessage`](./noMentionMessage.md) and [`$mentionedRoles[]`](./mentionedRoles.md) works? +![example](https://user-images.githubusercontent.com/111157596/257056832-3040aa89-91ea-428e-b362-3ed075cf620e.png) + +```admonish question title="What is this?" +How [`$noMentionMessage`](./noMentionMessage.md) and [`$mentionedRoles[]`](./mentionedRoles.md) works? ``` + From ffd3de2bf75b43af7b9369bdd0f5e9356b2290a3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:46:00 +0300 Subject: [PATCH 0788/1179] Update createRole.md --- src/bdscript/createRole.md | 70 ++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/src/bdscript/createRole.md b/src/bdscript/createRole.md index 674a2a7d283..31b772f80d6 100644 --- a/src/bdscript/createRole.md +++ b/src/bdscript/createRole.md @@ -4,20 +4,23 @@ Creates a new role. ## Syntax ``` $createRole[Role name;Color hex;Hoist?;Mentionable?] -``` - +``` + ```admonish warning title="Limit" Discord allows users to create up to 250 roles per server. -``` +``` ### Parameters - `Role name` `(Type: String || Flag: Required)`: The name to give the new role. - -```admonish warning title="Limit" +```admonish warning title="Limit" Role names can have a maximum of 100 characters. -``` - -- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](https://htmlcolorcodes.com/color-picker) of the new role. +``` + +- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../tools/color.md) of the new role. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to select the best color! +``` + - `Hoist?` `(Type: Bool || Flag: Vacantable)`: Whether the role should be displayed separately (hoisted) or not. `no` means the role won't be hoisted, `yes` means it will.\ ![example](https://user-images.githubusercontent.com/69215413/122795705-965e9480-d28b-11eb-8e4e-98338f143ecb.png) - `Mentionable?` `(Type: Bool || Flag: Vacantable)`: Whether the role should be mentionable by everyone. `no` means the role won't be mentionable, `yes` means it will.\ @@ -47,28 +50,29 @@ New role created! \ ![example](https://user-images.githubusercontent.com/69215413/125973030-7c9b980c-cffb-4f8e-aacc-a644a6fa23c3.png) -~~~admonish tip -You can use [`$roleID[]`](./roleID.md) to return the role ID. - -``` -$nomention -$createRole[Staff;#FFFF00;no;no] -New role created! ID: $roleID[Staff] -``` - -``` discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - New role created! ID: 659789148806447134 -``` - -~~~ \ No newline at end of file + +~~~admonish tip +You can use [`$roleID[]`](./roleID.md) to return the role ID. + +``` +$nomention +$createRole[Staff;#FFFF00;no;no] +New role created! ID: $roleID[Staff] +``` + +``` discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + New role created! ID: 659789148806447134 +``` + +~~~ From 2022d8bd9fca035e000dc0461899854a1c568935 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:47:56 +0300 Subject: [PATCH 0789/1179] Update editEmbedIn.md --- src/bdscript/editEmbedIn.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bdscript/editEmbedIn.md b/src/bdscript/editEmbedIn.md index 1969ef73f2f..023852694c0 100644 --- a/src/bdscript/editEmbedIn.md +++ b/src/bdscript/editEmbedIn.md @@ -3,7 +3,7 @@ Edits the bot's message after the given time, as an embed. ## Syntax ``` -$editEmbedIn[Time;(Title;Description;Footer;Color)] +$editEmbedIn[Time;(Title;Description;Footer;Color hex)] ``` > 📝 Optional fields can be left empty. At least one embed field (`Title`, `Description`, or `Footer`) needs to be inputted. @@ -13,7 +13,10 @@ $editEmbedIn[Time;(Title;Description;Footer;Color)] - `Title` `(Type: String || Flag: Vacantable)`: The new embed title. Optional. - `Description` `(Type: String || Flag: Vacantable)`: The new embed description. Optional. - `Footer` `(Type: String || Flag: Vacantable)`: The new embed footer. Optional. -- `Color` `(Type: Color || Flag: Vacantable)`: The embed border color, must be a valid [color hex](https://htmlcolorcodes.com/color-picker) or color integer number. Use `0` for the default color. Optional. +- `Color hex` `(Type: Color || Flag: Vacantable)`: The embed border color, must be a valid [color hex](../tools/color.md). You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to select the best color! +``` ## Example ``` @@ -32,3 +35,4 @@ $editEmbedIn[5s;Epic Title;This is the edited description!;;#E46AFC] **After** ![example2](https://user-images.githubusercontent.com/69215413/123012680-b7f57400-d390-11eb-866c-6f0aa0fdf9f7.png) + From 74120444c37660394bc903c71574714b2163467a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:49:02 +0300 Subject: [PATCH 0790/1179] Update editMessage.md --- src/bdscript/editMessage.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/bdscript/editMessage.md b/src/bdscript/editMessage.md index 112a5eac8a7..c751b5976b5 100644 --- a/src/bdscript/editMessage.md +++ b/src/bdscript/editMessage.md @@ -3,7 +3,7 @@ Edits one of the bot's messages. ## Syntax ``` -$editMessage[Channel ID;Message ID;Content;(Title;Description;Color;Footer)] +$editMessage[Channel ID;Message ID;Content;(Title;Description;Color hex;Footer)] ``` > [How Do I Get The Channel / Message ID? (click-me)](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID) @@ -13,7 +13,11 @@ $editMessage[Channel ID;Message ID;Content;(Title;Description;Color;Footer)] - `Content` `(Type: String || Flag: Emptiable)`: The new message contents. - `Title` `(Type: String || Flag: Vacantable)`: The new embed title. - `Description` `(Type: String || Flag: Vacantable)`: The new embed description. -- `Color` `(Type: Color || Flag: Vacantable)`: The new embed color border hex. +- `Color hex` `(Type: Color || Flag: Vacantable)`: The new embed [color border hex](../tools/color.md). You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to select the best color! +``` + - `Footer` `(Type: String || Flag: Vacantable)`: The new embed footer text. ## Example @@ -30,3 +34,4 @@ $editMessage[853070225398693898;857040509549281292;This message has been edited! **After** ![example2](https://user-images.githubusercontent.com/69215413/125876457-cf834ed3-f57c-41f3-b862-20433ec21b83.png) + From 8207f7d7b749fc4ba4a4bce8fe288aee01291bf7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:49:56 +0300 Subject: [PATCH 0791/1179] Update embedSuppressErrors.md --- src/bdscript/embedSuppressErrors.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/bdscript/embedSuppressErrors.md b/src/bdscript/embedSuppressErrors.md index 9eae3ce12b6..9742ff485e9 100644 --- a/src/bdscript/embedSuppressErrors.md +++ b/src/bdscript/embedSuppressErrors.md @@ -3,7 +3,7 @@ Suppresses the error messages, responds with the embed if there is an error. ## Syntax ``` -$embedSuppressErrors[Title;Description;(Color;Author;Footer;Footer icon)] +$embedSuppressErrors[Title;Description;(Color hex;Author;Footer;Footer icon)] ``` > All fields are optional, leave the field empty to not include it. At least one field needs to be inputted, however. @@ -11,7 +11,11 @@ $embedSuppressErrors[Title;Description;(Color;Author;Footer;Footer icon)] ### Parameters - `Title` `(Type: String || Flag: Emptiable)`: The title of the embed. - `Description` `(Type: String || Flag: Emptiable)`: The embed description. -- `Color` `(Type: Color || Flag: Vacantable)`: The embed border color, must be a valid [color hex](https://htmlcolorcodes.com/color-picker). +- `Color hex` `(Type: Color || Flag: Vacantable)`: The embed border color, must be a valid [color hex](../tools/color.md). You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to select the best color! +``` + - `Author` `(Type: String || Flag: Vacantable)`: The embed author text. - `Footer` `(Type: String || Flag: Vacantable)`: The embed footer text. - `Footer icon` `(Type: URL || Flag: Vacantable)`: The embed footer icon, must be a valid image URL. @@ -36,3 +40,4 @@ $argsCheck[>1;You must type at least one word] You typed "$message" ``` ![example_2](https://github.com/caramellya-mei/bdfd-wiki/assets/115384748/f8bb4e3b-e87e-4d9e-83ce-f480363ea924) + From d10a57bf308ee4ae3cb487391bcaab924ba0b78c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:50:52 +0300 Subject: [PATCH 0792/1179] Update modifyRole.md --- src/bdscript/modifyRole.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/bdscript/modifyRole.md b/src/bdscript/modifyRole.md index 8b0d9315e25..3cf85f176ca 100644 --- a/src/bdscript/modifyRole.md +++ b/src/bdscript/modifyRole.md @@ -5,15 +5,19 @@ Modifies an existing role. ``` $modifyRole[Role ID;(Role name;Color hex;Hoisted?;Mentionable?)] ``` - + ```admonish tip You can use `!unchanged` as an argument to leave the setting as-is. -``` +``` ### Parameters - `Role ID` `(Type: Snowflake || Flag: Required)`: The ID of the role to modify. - `Role name` `(Type: String || Flag: Optional)`: The new role name. -- `Color hex` `(Type: Color || Flag: Optional)`: The new role color. +- `Color hex` `(Type: Color || Flag: Optional)`: The new role [color hex](../tools/color.md). You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to select the best color! +``` + - `Hoisted?` `(Type: Bool || Flag: Optional)`: Whether the role should be displayed separately or not. - `Mentionable?` `(Type: Bool || Flag: Optional)`: Whether the role should be mentionable by everyone or not. @@ -29,3 +33,4 @@ $description[✅ Changed role name of <@&$findRole[$message[1]]>] ``` ![example](https://user-images.githubusercontent.com/69215413/123530371-771a9980-d6c7-11eb-987d-c4ba3bb40bd1.png) + From f0aff46f07fe4dbbf88ee39a3c0336e484883f3b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:51:35 +0300 Subject: [PATCH 0793/1179] Update sendEmbedMessage.md --- src/bdscript/sendEmbedMessage.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bdscript/sendEmbedMessage.md b/src/bdscript/sendEmbedMessage.md index 932e74b1cfe..8aecf777dfa 100644 --- a/src/bdscript/sendEmbedMessage.md +++ b/src/bdscript/sendEmbedMessage.md @@ -12,7 +12,11 @@ $sendEmbedMessage[Channel ID;Content;(Title;Title URL;Description;Color;Author;A - `Title` `(Type: String || Flag: Vacantable)`: The text that will be used as the title. - `Title URL` `(Type: URL || Flag: Vacantable)`: The URL that will be applied to the title. - `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. -- `Color` `(Type: Color || Flag: Vacantable)`: The [color hex](https://htmlcolorcodes.com/color-picker/) or integer to set the embed border color as. +- `Color` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to select the best color! +``` + - `Author` `(Type: String || Flag: Vacantable )`: The text that appears at the author. - `Author icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the author. Must be a valid image URL. - `Footer` `(Type: String || Flag: Vacantable)`: The text to set the footer as. @@ -28,3 +32,4 @@ $nomention $sendEmbedMessage[$channelID;;Title;https://discord.com/;description;000000;author;$authorAvatar;footer;$authorAvatar;$authorAvatar;$authorAvatar;no;no] ``` ![image](https://user-images.githubusercontent.com/42785890/151873621-10b17532-93ee-421c-8eea-515f40f1a124.png) + From 562e18d4fe4e4738926efc160dd20cfc940acaa7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:55:09 +0300 Subject: [PATCH 0794/1179] Update getRoleColor.md --- src/bdscript/getRoleColor.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bdscript/getRoleColor.md b/src/bdscript/getRoleColor.md index 233bae0f7a8..d47a8225923 100644 --- a/src/bdscript/getRoleColor.md +++ b/src/bdscript/getRoleColor.md @@ -6,6 +6,10 @@ Returns a role's color hex. $getRoleColor[Role ID] ``` +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to test colors! +``` + ### Parameters - `Role ID` `(Type: Snowflake || Flag: Required)`: The role to get the color hex from. @@ -32,3 +36,4 @@ Color: #$getRoleColor[$highestRole[$authorID]] ```admonish question title="What is this?" How [`$authorID`](./authorID.md) and [`$highestRole[]`](./highestRoleComplex.md) works? ``` + From c87b9916e5d877b313120645679975537ff5c9ba Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:55:29 +0300 Subject: [PATCH 0795/1179] Update roleInfo.md --- src/bdscript/roleInfo.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bdscript/roleInfo.md b/src/bdscript/roleInfo.md index e15220fa391..2034d60668f 100644 --- a/src/bdscript/roleInfo.md +++ b/src/bdscript/roleInfo.md @@ -17,6 +17,10 @@ You can use the following "commands" within `$roleInfo[]`: - `{mentionable}` - Returns if the role is mentionable by everyone. - `{hoist}` - Returns if the role is hoisted (displayed separately). - `{color}` - Returns the role's color. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to test colors! +``` + - `{position}` - Returns the role's position on the "roles list". > `$roleInfo[]` automatically generates a description. So, `$description[]` should not be used in the code. @@ -34,3 +38,4 @@ $title[Role Info] ``` ![example](https://user-images.githubusercontent.com/69215413/122831224-8f4d7b80-d2b7-11eb-838a-fc2ba7cd7476.png) + From 222bfc3a0153947cbcedaa52f77ee400df3132de Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:55:51 +0300 Subject: [PATCH 0796/1179] Update userBannerColor.md --- src/bdscript/userBannerColor.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bdscript/userBannerColor.md b/src/bdscript/userBannerColor.md index 483e623a749..e096b8b523d 100644 --- a/src/bdscript/userBannerColor.md +++ b/src/bdscript/userBannerColor.md @@ -6,6 +6,10 @@ Returns the color of the given user banner. Returns an empty string if no banner $userBannerColor[User ID] ``` +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to test colors! +``` + ### Parameters - `User ID` `(Type: Snowflake || Flag: Required)`: The user to get the banner color from. @@ -35,3 +39,4 @@ $nomention ```admonish question title="What is this?" How [`$authorID`](./authorID.md) works? ``` + From df815a876398c46b1c2c3260ba6f80d5dcb95658 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:56:34 +0300 Subject: [PATCH 0797/1179] Update isValidHex.md --- src/bdscript/isValidHex.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bdscript/isValidHex.md b/src/bdscript/isValidHex.md index ae22a146774..cdf3c1ff359 100644 --- a/src/bdscript/isValidHex.md +++ b/src/bdscript/isValidHex.md @@ -62,6 +62,10 @@ Is valid HEX? $isValidHex[$message] How [`$message`](./message.md) works? ``` +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to choose colors! +``` +

🤖 Playground

Here you can understand how this function works.

@@ -74,3 +78,4 @@ How [`$message`](./message.md) works? Is valid HEX? true
+ From d8756dc898882ab19fb84d91578877cdc82cdca0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:19:36 +0300 Subject: [PATCH 0798/1179] Update color.md --- src/tools/color.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/tools/color.md b/src/tools/color.md index 09846b7658a..15846b19bf2 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -138,6 +138,10 @@ Here you can choose a color to use in your command. +```admonish note +Hex colors are codes that represent colors using hexadecimal values for red, green, and blue. A shorthand like #090 is a compact version of #009900, meaning no red, full green, and no blue, resulting in a pure green. The format #RGB expands each digit to RRGGBB, making it easy to define web colors, including in BDFD's color functions for customizing bot messages. +``` +

Color Picker

Select the color.

@@ -161,6 +165,10 @@ Here you can choose a color to use in your command. ## Functions Here are all the functions related to hex colors. +```admonish note +You can use color hex in the "Color hex" parameters. +``` + **SET**: - [`$addContainer[]`](../bdscript/addContainer.md) - [`$color[]`](../bdscript/color.md) @@ -180,3 +188,8 @@ Here are all the functions related to hex colors. **CHECK**: - [`$isValidHex[]`](../bdscript/isValidHex.md) + +## Example +```$nomention +$color[] +``` From 2aa8a8bbd0b3c081414b84e1b995ea8eb89165f9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:21:55 +0300 Subject: [PATCH 0799/1179] Update color.md --- src/tools/color.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 15846b19bf2..500b9405bdc 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -190,6 +190,30 @@ You can use color hex in the "Color hex" parameters. - [`$isValidHex[]`](../bdscript/isValidHex.md) ## Example -```$nomention -$color[] +``` +$nomention +$description[⬅️ Border color hex] +$color[#673ab7] +``` + +``` discord yaml +- user_id: 729343563401265193 + username: Nicky + color: "#EE7908" + content: | + !example +- user_id: 566613317972394004 + username: Wiki Bot + color: "#748BD4" + bot: true + verified: true + content: + embed: + description: ⬅️ Border color hex + color: "#673ab7" +``` + + +```admonish question title="What is this?" +How [`$color[]`](../bdscript/color.md) and [`$description[]`](../bdscript/description.md) works? ``` From f6daa736dc4c93399f70f1f34ac99c63ce3aba09 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:22:28 +0300 Subject: [PATCH 0800/1179] Update color.md --- src/tools/color.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 500b9405bdc..078bacce717 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -197,14 +197,14 @@ $color[#673ab7] ``` ``` discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" content: | !example -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" bot: true verified: true content: From 5762e7dc51407b73fe2df7ff08f76b64d7e810bc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:25:54 +0300 Subject: [PATCH 0801/1179] Update onInteraction.md --- src/callbacks/onInteraction.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/callbacks/onInteraction.md b/src/callbacks/onInteraction.md index 4e12ddc4ac2..9d48f69d739 100644 --- a/src/callbacks/onInteraction.md +++ b/src/callbacks/onInteraction.md @@ -111,4 +111,6 @@ $endif I can't use the button ``` -> How does [`$if[]`](../guides/general/ifStatements.md) and [`$customID[]`](../bdscript/customID.md) work? \ No newline at end of file +```admonish question title="What is this?" +How [`$if[]`](../guides/general/ifStatements.md) and [`$customID[]`](../bdscript/customID.md) work? +``` \ No newline at end of file From 62587d24f439f104dfcda2c50be58ffb6e0d976b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:26:22 +0300 Subject: [PATCH 0802/1179] Update onInteraction.md --- src/callbacks/onInteraction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/callbacks/onInteraction.md b/src/callbacks/onInteraction.md index 9d48f69d739..aa940aa7666 100644 --- a/src/callbacks/onInteraction.md +++ b/src/callbacks/onInteraction.md @@ -112,5 +112,5 @@ $endif ``` ```admonish question title="What is this?" -How [`$if[]`](../guides/general/ifStatements.md) and [`$customID[]`](../bdscript/customID.md) work? +How [`$if[]`](../bdscript/if.md) and [`$customID[]`](../bdscript/customID.md) work? ``` \ No newline at end of file From d1cbd73f94ef394d392fbaf46964326696780f79 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:26:47 +0300 Subject: [PATCH 0803/1179] Update onInteractionComplex.md --- src/callbacks/onInteractionComplex.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/callbacks/onInteractionComplex.md b/src/callbacks/onInteractionComplex.md index 61eec49c0f3..1b7eb1c78f4 100644 --- a/src/callbacks/onInteractionComplex.md +++ b/src/callbacks/onInteractionComplex.md @@ -61,4 +61,6 @@ $onInteraction[Interaction ID] Hello Nicky! ``` -> How [`$addButton[]`](../bdscript/addButton.md) works? +```admonish question title="What is this?" +How [`$addButton[]`](../bdscript/addButton.md) works? +``` From 84bbe3f8d572233ebf4340b11f33ae359e347690 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:30:10 +0300 Subject: [PATCH 0804/1179] Update timestamp.md --- src/tools/timestamp.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 364a129326f..a1c20c8863a 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -133,8 +133,12 @@ Here you can manage UnixTime for your commands. +```admonish note +Unix time is a system for tracking time by counting the number of seconds that have passed since January 1st, 1970. This value is stored as a simple integer, which computers can easily process and calculate with. For example, the function [`$getTimestamp`](../bdscript/getTimestamp.md) in BDFD can be used to get the current Unix timestamp or perform time-based operations for your bot. +``` + ```admonish info -The timezone selected on your device is used. +The timezone selected on your device is used as default. ```
From d5ec617a456a404f571402268e74b133ca4f88f0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:30:55 +0300 Subject: [PATCH 0805/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index a1c20c8863a..af527d573b1 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -144,7 +144,7 @@ The timezone selected on your device is used as default.

Time zone

Select timezone for time calculations

- +
From 7bf82306854d1670aa5b9fd604c1b034e5d4ca45 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:50:29 +0300 Subject: [PATCH 0806/1179] Update playground.js --- src/theme/playground.js | 838 ++++++++++++++++++++-------------------- 1 file changed, 426 insertions(+), 412 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index ff50182cc22..7494b226d7c 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1132,416 +1132,430 @@ function generateRandomColor() { // Timestamp -const datetimePicker = document.getElementById('datetimepicker'); -const unixTimeDisplay = document.getElementById('unixtime-display'); -const timestampInfo = document.getElementById('timestamp-info'); -const unixInput = document.getElementById('unix-input'); -const dateDisplay = document.getElementById('date-display'); -const dateInfo = document.getElementById('date-info'); -const currentTimeEl = document.getElementById('current-time'); -const timezoneInput = document.getElementById('timezone'); -const timezoneError = document.querySelector('.timezone-error'); -const timerDisplay = document.getElementById('timer-display'); - -let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; -let isTimezoneValid = true; -let clickCounters = {}; -let relativeOffset = 0; - -const now = new Date(); -const year = now.getFullYear(); -const month = String(now.getMonth() + 1).padStart(2, '0'); -const day = String(now.getDate()).padStart(2, '0'); -const hours = String(now.getHours()).padStart(2, '0'); -const minutes = String(now.getMinutes()).padStart(2, '0'); - -if (datetimePicker) { - datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; -} - -const currentUnixTime = Math.floor(now.getTime() / 1000); - -if (unixInput) { - unixInput.value = currentUnixTime; -} - -function updateTimezone() { - const timezoneValue = timezoneInput.value.trim(); - - if (!timezoneValue) { - currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; - isTimezoneValid = true; - timezoneError.textContent = ''; - updateDateFromUnix(); - updateCurrentTime(); - return; - } - - try { - const testDate = new Date(); - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezoneValue, - timeZoneName: 'short' - }); - const parts = formatter.formatToParts(testDate); - - currentTimezone = timezoneValue; - isTimezoneValid = true; - timezoneError.textContent = ''; - updateDateFromUnix(); - updateCurrentTime(); - } catch (error) { - timezoneError.textContent = 'Invalid timezone'; - isTimezoneValid = false; - currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; - updateDateFromUnix(); - updateCurrentTime(); - } -} - -function formatDateInTimezone(date, timezone) { - if (!isTimezoneValid || !timezone) { - return date.toLocaleString(); - } - - try { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezone, - year: 'numeric', - month: 'numeric', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - hour12: false - }); - - const parts = formatter.formatToParts(date); - const year = parts.find(p => p.type === 'year').value; - const month = parts.find(p => p.type === 'month').value.padStart(2, '0'); - const day = parts.find(p => p.type === 'day').value.padStart(2, '0'); - const hour = parts.find(p => p.type === 'hour').value.padStart(2, '0'); - const minute = parts.find(p => p.type === 'minute').value.padStart(2, '0'); - const second = parts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; - - return `${year}-${month}-${day} ${hour}:${minute}:${second}`; - } catch (error) { - return date.toLocaleString(); - } -} - -function getCurrentTimeInTimezone() { - const now = new Date(); - - if (!isTimezoneValid || !currentTimezone) { - return { - dateString: now.toLocaleDateString(), - unixTime: Math.floor(now.getTime() / 1000) - }; - } - - try { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: currentTimezone, - year: 'numeric', - month: 'numeric', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - hour12: false - }); - - const dateParts = formatter.formatToParts(now); - const year = dateParts.find(p => p.type === 'year').value; - const month = dateParts.find(p => p.type === 'month').value.padStart(2, '0'); - const day = dateParts.find(p => p.type === 'day').value.padStart(2, '0'); - const hour = dateParts.find(p => p.type === 'hour').value.padStart(2, '0'); - const minute = dateParts.find(p => p.type === 'minute').value.padStart(2, '0'); - const second = dateParts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; - - return { - dateString: `${year}-${month}-${day} ${hour}:${minute}:${second}`, - unixTime: Math.floor(now.getTime() / 1000) - }; - } catch (error) { - return { - dateString: now.toLocaleDateString(), - unixTime: Math.floor(now.getTime() / 1000) - }; - } -} - -function getUnixTimeForNewYear(year, timezone) { - try { - const dateString = `${year}-01-01T00:00:00`; - - if (timezone) { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezone, - year: 'numeric', - month: '2-digit', - day: '2-digit', - hour: '2-digit', - minute: '2-digit', - second: '2-digit', - hour12: false - }); - - const date = new Date(dateString); - const formatted = formatter.format(date); - - const adjustedDate = new Date(formatted); - return Math.floor(adjustedDate.getTime() / 1000); - } else { - return Math.floor(new Date(dateString + 'Z').getTime() / 1000); - } - } catch (error) { - return Math.floor(new Date(`${year}-01-01T00:00:00Z`).getTime() / 1000); - } -} - -function getUnixTimeForNextDay(timezone) { - try { - const now = new Date(); - const tomorrow = new Date(now); - tomorrow.setDate(tomorrow.getDate() + 1); - tomorrow.setHours(0, 0, 0, 0); - - if (timezone) { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezone, - year: 'numeric', - month: '2-digit', - day: '2-digit', - hour: '2-digit', - minute: '2-digit', - second: '2-digit', - hour12: false - }); - - const formatted = formatter.format(tomorrow); - const adjustedDate = new Date(formatted); - return Math.floor(adjustedDate.getTime() / 1000); - } else { - tomorrow.setUTCHours(0, 0, 0, 0); - return Math.floor(tomorrow.getTime() / 1000); - } - } catch (error) { - const tomorrow = new Date(); - tomorrow.setDate(tomorrow.getDate() + 1); - tomorrow.setHours(0, 0, 0, 0); - return Math.floor(tomorrow.getTime() / 1000); - } -} - -function formatTimeDifference(timestamp) { - const now = Math.floor(Date.now() / 1000); - const diff = timestamp - now; - const absDiff = Math.abs(diff); - - if (absDiff < 60) { - return diff >= 0 ? `in ${absDiff} second${absDiff !== 1 ? 's' : ''}` : `${absDiff} second${absDiff !== 1 ? 's' : ''} ago`; - } - - const years = Math.floor(absDiff / 31536000); - const months = Math.floor((absDiff % 31536000) / 2592000); - const days = Math.floor((absDiff % 2592000) / 86400); - const hours = Math.floor((absDiff % 86400) / 3600); - const minutes = Math.floor((absDiff % 3600) / 60); - const seconds = absDiff % 60; - - const parts = []; - - if (years > 0) parts.push(`${years} year${years !== 1 ? 's' : ''}`); - if (months > 0) parts.push(`${months} month${months !== 1 ? 's' : ''}`); - if (days > 0) parts.push(`${days} day${days !== 1 ? 's' : ''}`); - if (hours > 0) parts.push(`${hours} hour${hours !== 1 ? 's' : ''}`); - if (minutes > 0) parts.push(`${minutes} minute${minutes !== 1 ? 's' : ''}`); - if (seconds > 0) parts.push(`${seconds} second${seconds !== 1 ? 's' : ''}`); - - if (parts.length === 0) { - return diff >= 0 ? 'now' : 'just now'; - } - - const timeString = parts.join(', '); - return diff >= 0 ? `in ${timeString}` : `${timeString} ago`; -} - -function updateTimerDisplay() { - const timestamp = parseInt(unixInput.value); - - if (!isNaN(timestamp)) { - timerDisplay.textContent = formatTimeDifference(timestamp); - } else { - timerDisplay.textContent = 'Invalid timestamp'; - } -} - -function updateCurrentTime() { - const timeInfo = getCurrentTimeInTimezone(); - currentTimeEl.innerHTML = `${timeInfo.dateString}
${timeInfo.unixTime}`; - updateTimerDisplay(); -} - -function updateUnixTime() { - const selectedDate = new Date(datetimePicker.value); - - if (!isNaN(selectedDate.getTime())) { - const unixTime = Math.floor(selectedDate.getTime() / 1000); - const dateString = formatDateInTimezone(selectedDate, currentTimezone); - - unixTimeDisplay.textContent = unixTime; - - if (parseInt(unixInput.value) !== unixTime) { - unixInput.value = unixTime; - updateDateFromUnix(); - } - } -} - -function updateDateFromUnix() { - const unixTime = parseInt(unixInput.value); - - if (!isNaN(unixTime) && unixTime >= 0) { - const date = new Date(unixTime * 1000); - - if (!isNaN(date.getTime())) { - const dateString = formatDateInTimezone(date, currentTimezone); - dateDisplay.textContent = dateString; - - const year = date.getFullYear(); - const month = String(date.getMonth() + 1).padStart(2, '0'); - const day = String(date.getDate()).padStart(2, '0'); - const hours = String(date.getHours()).padStart(2, '0'); - const minutes = String(date.getMinutes()).padStart(2, '0'); - - const datetimeLocalValue = `${year}-${month}-${day}T${hours}:${minutes}`; - - if (datetimePicker.value !== datetimeLocalValue) { - datetimePicker.value = datetimeLocalValue; - } - } - } else if (unixInput.value === '') { - dateDisplay.textContent = 'Not set'; - dateInfo.textContent = ''; - timerDisplay.textContent = 'Not set'; - } else { - dateDisplay.textContent = 'Invalid timestamp'; - dateInfo.textContent = 'Please enter a valid Unix timestamp'; - timerDisplay.textContent = 'Invalid timestamp'; - } - - updateTimerDisplay(); -} - -window.updateTimezone = updateTimezone; -window.updateUnixTime = updateUnixTime; -window.updateDateFromUnix = updateDateFromUnix; - -function createQuickButtons() { - const quickButtons = document.createElement('div'); - quickButtons.className = 'time-buttons'; - - const times = [ - {id: 'now', label: 'Now', type: 'now'}, - {id: 'hourAgo', label: '1 hour ago', type: 'relative', seconds: -3600}, - {id: 'dayAgo', label: '1 day ago', type: 'relative', seconds: -86400}, - {id: 'weekAgo', label: '1 week ago', type: 'relative', seconds: -604800}, - {id: 'hourLater', label: 'in 1 hour', type: 'relative', seconds: 3600}, - {id: 'dayLater', label: 'in 1 day', type: 'relative', seconds: 86400}, - {id: 'weekLater', label: 'in 1 week', type: 'relative', seconds: 604800}, - {id: 'newDay', label: 'Next day', type: 'newDay'}, - {id: 'newYear', label: 'Next New Year', type: 'newYear'} - ]; - - times.forEach(time => { - const button = document.createElement('button'); - button.id = time.id; - - if (time.type === 'newYear') { - const now = new Date(); - const nextYear = now.getFullYear() + 1; - button.textContent = `New Year ${nextYear}`; - } else if (time.type === 'newDay') { - button.textContent = time.label; - } else { - button.textContent = time.label; - } - - button.onclick = function() { - if (!clickCounters[time.id]) { - clickCounters[time.id] = 1; - } else { - clickCounters[time.id]++; - } - - const multiplier = clickCounters[time.id]; - let unixTime; - let baseTime = Math.floor(Date.now() / 1000) + relativeOffset; - - if (time.type === 'now') { - unixTime = Math.floor(Date.now() / 1000); - relativeOffset = 0; - for (const key in clickCounters) { - if (key !== 'newDay' && key !== 'newYear') { - clickCounters[key] = 0; - } - } - } else if (time.type === 'relative') { - relativeOffset += time.seconds; - unixTime = Math.floor(Date.now() / 1000) + relativeOffset; - } else if (time.type === 'newYear') { - const now = new Date(); - const nextYear = now.getFullYear() + multiplier; - button.textContent = `New Year ${nextYear}`; - unixTime = getUnixTimeForNewYear(nextYear, currentTimezone); - } else if (time.type === 'newDay') { - unixTime = getUnixTimeForNextDay(currentTimezone) + (86400 * (multiplier - 1)); - } - - unixInput.value = unixTime; - updateDateFromUnix(); - }; - - quickButtons.appendChild(button); - }); - - const resetButton = document.createElement('button'); - resetButton.textContent = 'Reset counters'; - resetButton.onclick = function() { - relativeOffset = 0; - for (const key in clickCounters) { - clickCounters[key] = 0; - } - - const newYearButton = document.getElementById('newYear'); - if (newYearButton) { - const now = new Date(); - const nextYear = now.getFullYear() + 1; - newYearButton.textContent = `New Year ${nextYear}`; - } - - unixInput.value = Math.floor(Date.now() / 1000); - updateDateFromUnix(); - }; - - quickButtons.appendChild(resetButton); - - unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); -} - -updateCurrentTime(); -setInterval(updateCurrentTime, 1000); - -document.addEventListener('DOMContentLoaded', function() { - createQuickButtons(); - updateDateFromUnix(); - updateUnixTime(); +const datetimePicker = document.getElementById('datetimepicker'); +const unixTimeDisplay = document.getElementById('unixtime-display'); +const timestampInfo = document.getElementById('timestamp-info'); +const unixInput = document.getElementById('unix-input'); +const dateDisplay = document.getElementById('date-display'); +const dateInfo = document.getElementById('date-info'); +const currentTimeEl = document.getElementById('current-time'); +const timezoneInput = document.getElementById('timezone'); +const timezoneError = document.querySelector('.timezone-error'); +const timerDisplay = document.getElementById('timer-display'); + +if (!datetimePicker || !unixInput || !currentTimeEl) { + console.error('Required elements not found'); +} + +let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; +let isTimezoneValid = true; +let clickCounters = {}; +let relativeOffset = 0; + +const now = new Date(); +const year = now.getFullYear(); +const month = String(now.getMonth() + 1).padStart(2, '0'); +const day = String(now.getDate()).padStart(2, '0'); +const hours = String(now.getHours()).padStart(2, '0'); +const minutes = String(now.getMinutes()).padStart(2, '0'); + +if (datetimePicker) { + datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; +} + +const currentUnixTime = Math.floor(now.getTime() / 1000); +if (unixInput) { + unixInput.value = currentUnixTime; +} + +function updateTimezone() { + if (!timezoneInput) return; + + const timezoneValue = timezoneInput.value.trim(); + + if (!timezoneValue) { + currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; + isTimezoneValid = true; + if (timezoneError) timezoneError.textContent = ''; + updateDateFromUnix(); + updateCurrentTime(); + return; + } + + try { + const testDate = new Date(); + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezoneValue, + timeZoneName: 'short' + }); + const parts = formatter.formatToParts(testDate); + + currentTimezone = timezoneValue; + isTimezoneValid = true; + if (timezoneError) timezoneError.textContent = ''; + updateDateFromUnix(); + updateCurrentTime(); + } catch (error) { + if (timezoneError) timezoneError.textContent = 'Invalid timezone'; + isTimezoneValid = false; + currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; + updateDateFromUnix(); + updateCurrentTime(); + } +} + +function formatDateInTimezone(date, timezone) { + if (!isTimezoneValid || !timezone) { + return date.toLocaleString(); + } + + try { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezone, + year: 'numeric', + month: 'numeric', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + hour12: false + }); + + const parts = formatter.formatToParts(date); + const year = parts.find(p => p.type === 'year').value; + const month = parts.find(p => p.type === 'month').value.padStart(2, '0'); + const day = parts.find(p => p.type === 'day').value.padStart(2, '0'); + const hour = parts.find(p => p.type === 'hour').value.padStart(2, '0'); + const minute = parts.find(p => p.type === 'minute').value.padStart(2, '0'); + const second = parts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; + + return `${year}-${month}-${day} ${hour}:${minute}:${second}`; + } catch (error) { + return date.toLocaleString(); + } +} + +function getCurrentTimeInTimezone() { + const now = new Date(); + + if (!isTimezoneValid || !currentTimezone) { + return { + dateString: now.toLocaleDateString(), + unixTime: Math.floor(now.getTime() / 1000), + timezone: Intl.DateTimeFormat().resolvedOptions().timeZone + }; + } + + try { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: currentTimezone, + year: 'numeric', + month: 'numeric', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + hour12: false + }); + + const dateParts = formatter.formatToParts(now); + const year = dateParts.find(p => p.type === 'year').value; + const month = dateParts.find(p => p.type === 'month').value.padStart(2, '0'); + const day = dateParts.find(p => p.type === 'day').value.padStart(2, '0'); + const hour = dateParts.find(p => p.type === 'hour').value.padStart(2, '0'); + const minute = dateParts.find(p => p.type === 'minute').value.padStart(2, '0'); + const second = dateParts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; + + return { + dateString: `${year}-${month}-${day} ${hour}:${minute}:${second}`, + unixTime: Math.floor(now.getTime() / 1000), + timezone: currentTimezone + }; + } catch (error) { + return { + dateString: now.toLocaleDateString(), + unixTime: Math.floor(now.getTime() / 1000), + timezone: Intl.DateTimeFormat().resolvedOptions().timeZone + }; + } +} + +function getUnixTimeForNewYear(year, timezone) { + try { + const dateString = `${year}-01-01T00:00:00`; + + if (timezone) { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + hour12: false + }); + + const date = new Date(dateString); + const formatted = formatter.format(date); + + const adjustedDate = new Date(formatted); + return Math.floor(adjustedDate.getTime() / 1000); + } else { + return Math.floor(new Date(dateString + 'Z').getTime() / 1000); + } + } catch (error) { + return Math.floor(new Date(`${year}-01-01T00:00:00Z`).getTime() / 1000); + } +} + +function getUnixTimeForNextDay(timezone) { + try { + const now = new Date(); + const tomorrow = new Date(now); + tomorrow.setDate(tomorrow.getDate() + 1); + tomorrow.setHours(0, 0, 0, 0); + + if (timezone) { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + hour12: false + }); + + const formatted = formatter.format(tomorrow); + const adjustedDate = new Date(formatted); + return Math.floor(adjustedDate.getTime() / 1000); + } else { + tomorrow.setUTCHours(0, 0, 0, 0); + return Math.floor(tomorrow.getTime() / 1000); + } + } catch (error) { + const tomorrow = new Date(); + tomorrow.setDate(tomorrow.getDate() + 1); + tomorrow.setHours(0, 0, 0, 0); + return Math.floor(tomorrow.getTime() / 1000); + } +} + +function formatTimeDifference(timestamp) { + const now = Math.floor(Date.now() / 1000); + const diff = timestamp - now; + const absDiff = Math.abs(diff); + + if (absDiff < 60) { + return diff >= 0 ? `in ${absDiff} second${absDiff !== 1 ? 's' : ''}` : `${absDiff} second${absDiff !== 1 ? 's' : ''} ago`; + } + + const years = Math.floor(absDiff / 31536000); + const months = Math.floor((absDiff % 31536000) / 2592000); + const days = Math.floor((absDiff % 2592000) / 86400); + const hours = Math.floor((absDiff % 86400) / 3600); + const minutes = Math.floor((absDiff % 3600) / 60); + const seconds = absDiff % 60; + + const parts = []; + + if (years > 0) parts.push(`${years} year${years !== 1 ? 's' : ''}`); + if (months > 0) parts.push(`${months} month${months !== 1 ? 's' : ''}`); + if (days > 0) parts.push(`${days} day${days !== 1 ? 's' : ''}`); + if (hours > 0) parts.push(`${hours} hour${hours !== 1 ? 's' : ''}`); + if (minutes > 0) parts.push(`${minutes} minute${minutes !== 1 ? 's' : ''}`); + if (seconds > 0) parts.push(`${seconds} second${seconds !== 1 ? 's' : ''}`); + + if (parts.length === 0) { + return diff >= 0 ? 'now' : 'just now'; + } + + const timeString = parts.join(', '); + return diff >= 0 ? `in ${timeString}` : `${timeString} ago`; +} + +function updateTimerDisplay() { + if (!timerDisplay) return; + + const timestamp = parseInt(unixInput.value); + + if (!isNaN(timestamp)) { + timerDisplay.textContent = formatTimeDifference(timestamp); + } else { + timerDisplay.textContent = 'Invalid timestamp'; + } +} + +function updateCurrentTime() { + if (!currentTimeEl) return; + + const timeInfo = getCurrentTimeInTimezone(); + currentTimeEl.innerHTML = `${timeInfo.dateString}
${timeInfo.unixTime}
${timeInfo.timezone}`; + updateTimerDisplay(); +} + +function updateUnixTime() { + if (!datetimePicker || !unixTimeDisplay || !unixInput) return; + + const selectedDate = new Date(datetimePicker.value); + + if (!isNaN(selectedDate.getTime())) { + const unixTime = Math.floor(selectedDate.getTime() / 1000); + const dateString = formatDateInTimezone(selectedDate, currentTimezone); + + unixTimeDisplay.textContent = unixTime; + + if (parseInt(unixInput.value) !== unixTime) { + unixInput.value = unixTime; + updateDateFromUnix(); + } + } +} + +function updateDateFromUnix() { + if (!unixInput || !dateDisplay || !datetimePicker || !timerDisplay) return; + + const unixTime = parseInt(unixInput.value); + + if (!isNaN(unixTime) && unixTime >= 0) { + const date = new Date(unixTime * 1000); + + if (!isNaN(date.getTime())) { + const dateString = formatDateInTimezone(date, currentTimezone); + dateDisplay.textContent = dateString; + + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + const hours = String(date.getHours()).padStart(2, '0'); + const minutes = String(date.getMinutes()).padStart(2, '0'); + + const datetimeLocalValue = `${year}-${month}-${day}T${hours}:${minutes}`; + + if (datetimePicker.value !== datetimeLocalValue) { + datetimePicker.value = datetimeLocalValue; + } + } + } else if (unixInput.value === '') { + dateDisplay.textContent = 'Not set'; + if (dateInfo) dateInfo.textContent = ''; + timerDisplay.textContent = 'Not set'; + } else { + dateDisplay.textContent = 'Invalid timestamp'; + if (dateInfo) dateInfo.textContent = 'Please enter a valid Unix timestamp'; + timerDisplay.textContent = 'Invalid timestamp'; + } + + updateTimerDisplay(); +} + +window.updateTimezone = updateTimezone; +window.updateUnixTime = updateUnixTime; +window.updateDateFromUnix = updateDateFromUnix; + +function createQuickButtons() { + if (!unixInput) return; + + const quickButtons = document.createElement('div'); + quickButtons.className = 'time-buttons'; + + const times = [ + {id: 'now', label: 'Now', type: 'now'}, + {id: 'hourAgo', label: '1 hour ago', type: 'relative', seconds: -3600}, + {id: 'dayAgo', label: '1 day ago', type: 'relative', seconds: -86400}, + {id: 'weekAgo', label: '1 week ago', type: 'relative', seconds: -604800}, + {id: 'hourLater', label: 'in 1 hour', type: 'relative', seconds: 3600}, + {id: 'dayLater', label: 'in 1 day', type: 'relative', seconds: 86400}, + {id: 'weekLater', label: 'in 1 week', type: 'relative', seconds: 604800}, + {id: 'newDay', label: 'Next day', type: 'newDay'}, + {id: 'newYear', label: 'Next New Year', type: 'newYear'} + ]; + + times.forEach(time => { + const button = document.createElement('button'); + button.id = time.id; + + if (time.type === 'newYear') { + const now = new Date(); + const nextYear = now.getFullYear() + 1; + button.textContent = `New Year ${nextYear}`; + } else if (time.type === 'newDay') { + button.textContent = time.label; + } else { + button.textContent = time.label; + } + + button.onclick = function() { + if (!clickCounters[time.id]) { + clickCounters[time.id] = 1; + } else { + clickCounters[time.id]++; + } + + const multiplier = clickCounters[time.id]; + let unixTime; + let baseTime = Math.floor(Date.now() / 1000) + relativeOffset; + + if (time.type === 'now') { + unixTime = Math.floor(Date.now() / 1000); + relativeOffset = 0; + for (const key in clickCounters) { + if (key !== 'newDay' && key !== 'newYear') { + clickCounters[key] = 0; + } + } + } else if (time.type === 'relative') { + relativeOffset += time.seconds; + unixTime = Math.floor(Date.now() / 1000) + relativeOffset; + } else if (time.type === 'newYear') { + const now = new Date(); + const nextYear = now.getFullYear() + multiplier; + button.textContent = `New Year ${nextYear}`; + unixTime = getUnixTimeForNewYear(nextYear, currentTimezone); + } else if (time.type === 'newDay') { + unixTime = getUnixTimeForNextDay(currentTimezone) + (86400 * (multiplier - 1)); + } + + unixInput.value = unixTime; + updateDateFromUnix(); + }; + + quickButtons.appendChild(button); + }); + + const resetButton = document.createElement('button'); + resetButton.textContent = 'Reset counters'; + resetButton.onclick = function() { + relativeOffset = 0; + for (const key in clickCounters) { + clickCounters[key] = 0; + } + + const newYearButton = document.getElementById('newYear'); + if (newYearButton) { + const now = new Date(); + const nextYear = now.getFullYear() + 1; + newYearButton.textContent = `New Year ${nextYear}`; + } + + unixInput.value = Math.floor(Date.now() / 1000); + updateDateFromUnix(); + }; + + quickButtons.appendChild(resetButton); + + unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); +} + +if (currentTimeEl) { + updateCurrentTime(); + setInterval(updateCurrentTime, 1000); +} + +document.addEventListener('DOMContentLoaded', function() { + createQuickButtons(); + updateDateFromUnix(); + updateUnixTime(); }); - - - - - - From 2e65ca5c6196eb653db5594911572e55da3f2c9f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:51:21 +0300 Subject: [PATCH 0807/1179] Update autocomplete.js --- src/theme/autocomplete.js | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index 2aa66690059..d08dbc62cae 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -128,13 +128,13 @@ function autocomplete() { textarea.addEventListener('blur', () => { setTimeout(hideAutocomplete, 200); }); - } - document.addEventListener('click', event => { - if (!autocompleteOutput.contains(event.target) && event.target !== textarea) { - hideAutocomplete(); - } - }); + document.addEventListener('click', event => { + if (!autocompleteOutput.contains(event.target) && event.target !== textarea) { + hideAutocomplete(); + } + }); + } } function addTooltips() { @@ -212,12 +212,13 @@ function updateAutocompleteState() { } document.addEventListener("DOMContentLoaded", function() { - autocomplete(); - addTooltips(); - updateAutocompleteState(); + if (window.location.href.includes('editor.html')) { + autocomplete(); + addTooltips(); + updateAutocompleteState(); + } }); - window.addEventListener('beforeunload', function (event) { const textarea = document.getElementById('editor'); From e6dcef4eaf23c74e064fc3f79294fe32be0974ec Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:05:44 +0300 Subject: [PATCH 0808/1179] Update timestamp.md --- src/tools/timestamp.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index af527d573b1..07c4f4cd0e6 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -194,3 +194,27 @@ Here are all the functions related to unix timestamp. - [`$lastPinTimestamp`](../bdscript/lastPinTimestamp.md) - [`$messageEditedTimestamp[]`](../bdscript/messageEditedTimestamp.md) - [`$premiumExpireTime`](../bdscript/premiumExpireTime.md) + +## Example +``` +$nomention +Unix date: +``` + +``` discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Unix date:
January 10, 2030
+``` + +```admonish example +text +``` From 71508a29542eefe6d26b3609272718084486c625 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:09:08 +0300 Subject: [PATCH 0809/1179] Update home.css --- src/theme/css/home.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/theme/css/home.css b/src/theme/css/home.css index bfb1537e4ca..b04516e33b3 100644 --- a/src/theme/css/home.css +++ b/src/theme/css/home.css @@ -46,6 +46,10 @@ transition: 0.3s; } +#truelol { + padding: 1rem; +} + .download, .resources { text-align: center; @@ -233,3 +237,4 @@ button a { transition: 0.3s; } } + From ac8f8f754dda5f3f94af0f8240d3bf5405540321 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:13:59 +0300 Subject: [PATCH 0810/1179] Update timestamp.md --- src/tools/timestamp.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 07c4f4cd0e6..a1116d525ce 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -122,8 +122,8 @@ margin-top: 20px; transition: 0.3s; } -.timezone-error { - color: #dc3545; +.timezone-error, #date-info { + color: #dc3545 !important; font-size: 12px; min-height: 16px; margin-top: -0.75rem; @@ -166,8 +166,8 @@ The timezone selected on your device is used as default.

Date and time:

Not set -
+
From 4a09aed658b7d2fdc5d0e234658782596627af91 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:16:12 +0300 Subject: [PATCH 0811/1179] Update playground.js --- src/theme/playground.js | 853 ++++++++++++++++++++-------------------- 1 file changed, 427 insertions(+), 426 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 7494b226d7c..a91c76aea3a 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -1132,430 +1132,431 @@ function generateRandomColor() { // Timestamp -const datetimePicker = document.getElementById('datetimepicker'); -const unixTimeDisplay = document.getElementById('unixtime-display'); -const timestampInfo = document.getElementById('timestamp-info'); -const unixInput = document.getElementById('unix-input'); -const dateDisplay = document.getElementById('date-display'); -const dateInfo = document.getElementById('date-info'); -const currentTimeEl = document.getElementById('current-time'); -const timezoneInput = document.getElementById('timezone'); -const timezoneError = document.querySelector('.timezone-error'); -const timerDisplay = document.getElementById('timer-display'); - -if (!datetimePicker || !unixInput || !currentTimeEl) { - console.error('Required elements not found'); -} - -let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; -let isTimezoneValid = true; -let clickCounters = {}; -let relativeOffset = 0; - -const now = new Date(); -const year = now.getFullYear(); -const month = String(now.getMonth() + 1).padStart(2, '0'); -const day = String(now.getDate()).padStart(2, '0'); -const hours = String(now.getHours()).padStart(2, '0'); -const minutes = String(now.getMinutes()).padStart(2, '0'); - -if (datetimePicker) { - datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; -} - -const currentUnixTime = Math.floor(now.getTime() / 1000); -if (unixInput) { - unixInput.value = currentUnixTime; -} - -function updateTimezone() { - if (!timezoneInput) return; - - const timezoneValue = timezoneInput.value.trim(); - - if (!timezoneValue) { - currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; - isTimezoneValid = true; - if (timezoneError) timezoneError.textContent = ''; - updateDateFromUnix(); - updateCurrentTime(); - return; - } - - try { - const testDate = new Date(); - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezoneValue, - timeZoneName: 'short' - }); - const parts = formatter.formatToParts(testDate); - - currentTimezone = timezoneValue; - isTimezoneValid = true; - if (timezoneError) timezoneError.textContent = ''; - updateDateFromUnix(); - updateCurrentTime(); - } catch (error) { - if (timezoneError) timezoneError.textContent = 'Invalid timezone'; - isTimezoneValid = false; - currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; - updateDateFromUnix(); - updateCurrentTime(); - } -} - -function formatDateInTimezone(date, timezone) { - if (!isTimezoneValid || !timezone) { - return date.toLocaleString(); - } - - try { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezone, - year: 'numeric', - month: 'numeric', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - hour12: false - }); - - const parts = formatter.formatToParts(date); - const year = parts.find(p => p.type === 'year').value; - const month = parts.find(p => p.type === 'month').value.padStart(2, '0'); - const day = parts.find(p => p.type === 'day').value.padStart(2, '0'); - const hour = parts.find(p => p.type === 'hour').value.padStart(2, '0'); - const minute = parts.find(p => p.type === 'minute').value.padStart(2, '0'); - const second = parts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; - - return `${year}-${month}-${day} ${hour}:${minute}:${second}`; - } catch (error) { - return date.toLocaleString(); - } -} - -function getCurrentTimeInTimezone() { - const now = new Date(); - - if (!isTimezoneValid || !currentTimezone) { - return { - dateString: now.toLocaleDateString(), - unixTime: Math.floor(now.getTime() / 1000), - timezone: Intl.DateTimeFormat().resolvedOptions().timeZone - }; - } - - try { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: currentTimezone, - year: 'numeric', - month: 'numeric', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - hour12: false - }); - - const dateParts = formatter.formatToParts(now); - const year = dateParts.find(p => p.type === 'year').value; - const month = dateParts.find(p => p.type === 'month').value.padStart(2, '0'); - const day = dateParts.find(p => p.type === 'day').value.padStart(2, '0'); - const hour = dateParts.find(p => p.type === 'hour').value.padStart(2, '0'); - const minute = dateParts.find(p => p.type === 'minute').value.padStart(2, '0'); - const second = dateParts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; - - return { - dateString: `${year}-${month}-${day} ${hour}:${minute}:${second}`, - unixTime: Math.floor(now.getTime() / 1000), - timezone: currentTimezone - }; - } catch (error) { - return { - dateString: now.toLocaleDateString(), - unixTime: Math.floor(now.getTime() / 1000), - timezone: Intl.DateTimeFormat().resolvedOptions().timeZone - }; - } -} - -function getUnixTimeForNewYear(year, timezone) { - try { - const dateString = `${year}-01-01T00:00:00`; - - if (timezone) { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezone, - year: 'numeric', - month: '2-digit', - day: '2-digit', - hour: '2-digit', - minute: '2-digit', - second: '2-digit', - hour12: false - }); - - const date = new Date(dateString); - const formatted = formatter.format(date); - - const adjustedDate = new Date(formatted); - return Math.floor(adjustedDate.getTime() / 1000); - } else { - return Math.floor(new Date(dateString + 'Z').getTime() / 1000); - } - } catch (error) { - return Math.floor(new Date(`${year}-01-01T00:00:00Z`).getTime() / 1000); - } -} - -function getUnixTimeForNextDay(timezone) { - try { - const now = new Date(); - const tomorrow = new Date(now); - tomorrow.setDate(tomorrow.getDate() + 1); - tomorrow.setHours(0, 0, 0, 0); - - if (timezone) { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezone, - year: 'numeric', - month: '2-digit', - day: '2-digit', - hour: '2-digit', - minute: '2-digit', - second: '2-digit', - hour12: false - }); - - const formatted = formatter.format(tomorrow); - const adjustedDate = new Date(formatted); - return Math.floor(adjustedDate.getTime() / 1000); - } else { - tomorrow.setUTCHours(0, 0, 0, 0); - return Math.floor(tomorrow.getTime() / 1000); - } - } catch (error) { - const tomorrow = new Date(); - tomorrow.setDate(tomorrow.getDate() + 1); - tomorrow.setHours(0, 0, 0, 0); - return Math.floor(tomorrow.getTime() / 1000); - } -} - -function formatTimeDifference(timestamp) { - const now = Math.floor(Date.now() / 1000); - const diff = timestamp - now; - const absDiff = Math.abs(diff); - - if (absDiff < 60) { - return diff >= 0 ? `in ${absDiff} second${absDiff !== 1 ? 's' : ''}` : `${absDiff} second${absDiff !== 1 ? 's' : ''} ago`; - } - - const years = Math.floor(absDiff / 31536000); - const months = Math.floor((absDiff % 31536000) / 2592000); - const days = Math.floor((absDiff % 2592000) / 86400); - const hours = Math.floor((absDiff % 86400) / 3600); - const minutes = Math.floor((absDiff % 3600) / 60); - const seconds = absDiff % 60; - - const parts = []; - - if (years > 0) parts.push(`${years} year${years !== 1 ? 's' : ''}`); - if (months > 0) parts.push(`${months} month${months !== 1 ? 's' : ''}`); - if (days > 0) parts.push(`${days} day${days !== 1 ? 's' : ''}`); - if (hours > 0) parts.push(`${hours} hour${hours !== 1 ? 's' : ''}`); - if (minutes > 0) parts.push(`${minutes} minute${minutes !== 1 ? 's' : ''}`); - if (seconds > 0) parts.push(`${seconds} second${seconds !== 1 ? 's' : ''}`); - - if (parts.length === 0) { - return diff >= 0 ? 'now' : 'just now'; - } - - const timeString = parts.join(', '); - return diff >= 0 ? `in ${timeString}` : `${timeString} ago`; -} - -function updateTimerDisplay() { - if (!timerDisplay) return; - - const timestamp = parseInt(unixInput.value); - - if (!isNaN(timestamp)) { - timerDisplay.textContent = formatTimeDifference(timestamp); - } else { - timerDisplay.textContent = 'Invalid timestamp'; - } -} - -function updateCurrentTime() { - if (!currentTimeEl) return; - - const timeInfo = getCurrentTimeInTimezone(); - currentTimeEl.innerHTML = `${timeInfo.dateString}
${timeInfo.unixTime}
${timeInfo.timezone}`; - updateTimerDisplay(); -} - -function updateUnixTime() { - if (!datetimePicker || !unixTimeDisplay || !unixInput) return; - - const selectedDate = new Date(datetimePicker.value); - - if (!isNaN(selectedDate.getTime())) { - const unixTime = Math.floor(selectedDate.getTime() / 1000); - const dateString = formatDateInTimezone(selectedDate, currentTimezone); - - unixTimeDisplay.textContent = unixTime; - - if (parseInt(unixInput.value) !== unixTime) { - unixInput.value = unixTime; - updateDateFromUnix(); - } - } -} - -function updateDateFromUnix() { - if (!unixInput || !dateDisplay || !datetimePicker || !timerDisplay) return; - - const unixTime = parseInt(unixInput.value); - - if (!isNaN(unixTime) && unixTime >= 0) { - const date = new Date(unixTime * 1000); - - if (!isNaN(date.getTime())) { - const dateString = formatDateInTimezone(date, currentTimezone); - dateDisplay.textContent = dateString; - - const year = date.getFullYear(); - const month = String(date.getMonth() + 1).padStart(2, '0'); - const day = String(date.getDate()).padStart(2, '0'); - const hours = String(date.getHours()).padStart(2, '0'); - const minutes = String(date.getMinutes()).padStart(2, '0'); - - const datetimeLocalValue = `${year}-${month}-${day}T${hours}:${minutes}`; - - if (datetimePicker.value !== datetimeLocalValue) { - datetimePicker.value = datetimeLocalValue; - } - } - } else if (unixInput.value === '') { - dateDisplay.textContent = 'Not set'; - if (dateInfo) dateInfo.textContent = ''; - timerDisplay.textContent = 'Not set'; - } else { - dateDisplay.textContent = 'Invalid timestamp'; - if (dateInfo) dateInfo.textContent = 'Please enter a valid Unix timestamp'; - timerDisplay.textContent = 'Invalid timestamp'; - } - - updateTimerDisplay(); -} - -window.updateTimezone = updateTimezone; -window.updateUnixTime = updateUnixTime; -window.updateDateFromUnix = updateDateFromUnix; - -function createQuickButtons() { - if (!unixInput) return; - - const quickButtons = document.createElement('div'); - quickButtons.className = 'time-buttons'; - - const times = [ - {id: 'now', label: 'Now', type: 'now'}, - {id: 'hourAgo', label: '1 hour ago', type: 'relative', seconds: -3600}, - {id: 'dayAgo', label: '1 day ago', type: 'relative', seconds: -86400}, - {id: 'weekAgo', label: '1 week ago', type: 'relative', seconds: -604800}, - {id: 'hourLater', label: 'in 1 hour', type: 'relative', seconds: 3600}, - {id: 'dayLater', label: 'in 1 day', type: 'relative', seconds: 86400}, - {id: 'weekLater', label: 'in 1 week', type: 'relative', seconds: 604800}, - {id: 'newDay', label: 'Next day', type: 'newDay'}, - {id: 'newYear', label: 'Next New Year', type: 'newYear'} - ]; - - times.forEach(time => { - const button = document.createElement('button'); - button.id = time.id; - - if (time.type === 'newYear') { - const now = new Date(); - const nextYear = now.getFullYear() + 1; - button.textContent = `New Year ${nextYear}`; - } else if (time.type === 'newDay') { - button.textContent = time.label; - } else { - button.textContent = time.label; - } - - button.onclick = function() { - if (!clickCounters[time.id]) { - clickCounters[time.id] = 1; - } else { - clickCounters[time.id]++; - } - - const multiplier = clickCounters[time.id]; - let unixTime; - let baseTime = Math.floor(Date.now() / 1000) + relativeOffset; - - if (time.type === 'now') { - unixTime = Math.floor(Date.now() / 1000); - relativeOffset = 0; - for (const key in clickCounters) { - if (key !== 'newDay' && key !== 'newYear') { - clickCounters[key] = 0; - } - } - } else if (time.type === 'relative') { - relativeOffset += time.seconds; - unixTime = Math.floor(Date.now() / 1000) + relativeOffset; - } else if (time.type === 'newYear') { - const now = new Date(); - const nextYear = now.getFullYear() + multiplier; - button.textContent = `New Year ${nextYear}`; - unixTime = getUnixTimeForNewYear(nextYear, currentTimezone); - } else if (time.type === 'newDay') { - unixTime = getUnixTimeForNextDay(currentTimezone) + (86400 * (multiplier - 1)); - } - - unixInput.value = unixTime; - updateDateFromUnix(); - }; - - quickButtons.appendChild(button); - }); - - const resetButton = document.createElement('button'); - resetButton.textContent = 'Reset counters'; - resetButton.onclick = function() { - relativeOffset = 0; - for (const key in clickCounters) { - clickCounters[key] = 0; - } - - const newYearButton = document.getElementById('newYear'); - if (newYearButton) { - const now = new Date(); - const nextYear = now.getFullYear() + 1; - newYearButton.textContent = `New Year ${nextYear}`; - } - - unixInput.value = Math.floor(Date.now() / 1000); - updateDateFromUnix(); - }; - - quickButtons.appendChild(resetButton); - - unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); -} - -if (currentTimeEl) { - updateCurrentTime(); - setInterval(updateCurrentTime, 1000); -} - -document.addEventListener('DOMContentLoaded', function() { - createQuickButtons(); - updateDateFromUnix(); - updateUnixTime(); +const datetimePicker = document.getElementById('datetimepicker'); +const unixTimeDisplay = document.getElementById('unixtime-display'); +const timestampInfo = document.getElementById('timestamp-info'); +const unixInput = document.getElementById('unix-input'); +const dateDisplay = document.getElementById('date-display'); +const dateInfo = document.getElementById('date-info'); +const currentTimeEl = document.getElementById('current-time'); +const timezoneInput = document.getElementById('timezone'); +const timezoneError = document.querySelector('.timezone-error'); +const timerDisplay = document.getElementById('timer-display'); + +if (!datetimePicker || !unixInput || !currentTimeEl) { + console.error('Required elements not found'); +} + +let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; +let isTimezoneValid = true; +let clickCounters = {}; +let relativeOffset = 0; + +const now = new Date(); +const year = now.getFullYear(); +const month = String(now.getMonth() + 1).padStart(2, '0'); +const day = String(now.getDate()).padStart(2, '0'); +const hours = String(now.getHours()).padStart(2, '0'); +const minutes = String(now.getMinutes()).padStart(2, '0'); + +if (datetimePicker) { + datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; +} + +const currentUnixTime = Math.floor(now.getTime() / 1000); +if (unixInput) { + unixInput.value = currentUnixTime; +} + +function updateTimezone() { + if (!timezoneInput) return; + + const timezoneValue = timezoneInput.value.trim(); + + if (!timezoneValue) { + currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; + isTimezoneValid = true; + if (timezoneError) timezoneError.textContent = ''; + updateDateFromUnix(); + updateCurrentTime(); + return; + } + + try { + const testDate = new Date(); + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezoneValue, + timeZoneName: 'short' + }); + const parts = formatter.formatToParts(testDate); + + currentTimezone = timezoneValue; + isTimezoneValid = true; + if (timezoneError) timezoneError.textContent = ''; + updateDateFromUnix(); + updateCurrentTime(); + } catch (error) { + if (timezoneError) timezoneError.textContent = 'Invalid timezone'; + isTimezoneValid = false; + currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; + updateDateFromUnix(); + updateCurrentTime(); + } +} + +function formatDateInTimezone(date, timezone) { + if (!isTimezoneValid || !timezone) { + return date.toLocaleString(); + } + + try { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezone, + year: 'numeric', + month: 'numeric', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + hour12: false + }); + + const parts = formatter.formatToParts(date); + const year = parts.find(p => p.type === 'year').value; + const month = parts.find(p => p.type === 'month').value.padStart(2, '0'); + const day = parts.find(p => p.type === 'day').value.padStart(2, '0'); + const hour = parts.find(p => p.type === 'hour').value.padStart(2, '0'); + const minute = parts.find(p => p.type === 'minute').value.padStart(2, '0'); + const second = parts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; + + return `${year}-${month}-${day} ${hour}:${minute}:${second}`; + } catch (error) { + return date.toLocaleString(); + } +} + +function getCurrentTimeInTimezone() { + const now = new Date(); + + if (!isTimezoneValid || !currentTimezone) { + return { + dateString: now.toLocaleDateString(), + unixTime: Math.floor(now.getTime() / 1000), + timezone: Intl.DateTimeFormat().resolvedOptions().timeZone + }; + } + + try { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: currentTimezone, + year: 'numeric', + month: 'numeric', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + hour12: false + }); + + const dateParts = formatter.formatToParts(now); + const year = dateParts.find(p => p.type === 'year').value; + const month = dateParts.find(p => p.type === 'month').value.padStart(2, '0'); + const day = dateParts.find(p => p.type === 'day').value.padStart(2, '0'); + const hour = dateParts.find(p => p.type === 'hour').value.padStart(2, '0'); + const minute = dateParts.find(p => p.type === 'minute').value.padStart(2, '0'); + const second = dateParts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; + + return { + dateString: `${year}-${month}-${day} ${hour}:${minute}:${second}`, + unixTime: Math.floor(now.getTime() / 1000), + timezone: currentTimezone + }; + } catch (error) { + return { + dateString: now.toLocaleDateString(), + unixTime: Math.floor(now.getTime() / 1000), + timezone: Intl.DateTimeFormat().resolvedOptions().timeZone + }; + } +} + +function getUnixTimeForNewYear(year, timezone) { + try { + const dateString = `${year}-01-01T00:00:00`; + + if (timezone) { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + hour12: false + }); + + const date = new Date(dateString); + const formatted = formatter.format(date); + + const adjustedDate = new Date(formatted); + return Math.floor(adjustedDate.getTime() / 1000); + } else { + return Math.floor(new Date(dateString + 'Z').getTime() / 1000); + } + } catch (error) { + return Math.floor(new Date(`${year}-01-01T00:00:00Z`).getTime() / 1000); + } +} + +function getUnixTimeForNextDay(timezone) { + try { + const now = new Date(); + const tomorrow = new Date(now); + tomorrow.setDate(tomorrow.getDate() + 1); + tomorrow.setHours(0, 0, 0, 0); + + if (timezone) { + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: timezone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + hour12: false + }); + + const formatted = formatter.format(tomorrow); + const adjustedDate = new Date(formatted); + return Math.floor(adjustedDate.getTime() / 1000); + } else { + tomorrow.setUTCHours(0, 0, 0, 0); + return Math.floor(tomorrow.getTime() / 1000); + } + } catch (error) { + const tomorrow = new Date(); + tomorrow.setDate(tomorrow.getDate() + 1); + tomorrow.setHours(0, 0, 0, 0); + return Math.floor(tomorrow.getTime() / 1000); + } +} + +function formatTimeDifference(timestamp) { + const now = Math.floor(Date.now() / 1000); + const diff = timestamp - now; + const absDiff = Math.abs(diff); + + if (absDiff < 60) { + return diff >= 0 ? `in ${absDiff} second${absDiff !== 1 ? 's' : ''}` : `${absDiff} second${absDiff !== 1 ? 's' : ''} ago`; + } + + const years = Math.floor(absDiff / 31536000); + const months = Math.floor((absDiff % 31536000) / 2592000); + const days = Math.floor((absDiff % 2592000) / 86400); + const hours = Math.floor((absDiff % 86400) / 3600); + const minutes = Math.floor((absDiff % 3600) / 60); + const seconds = absDiff % 60; + + const parts = []; + + if (years > 0) parts.push(`${years} year${years !== 1 ? 's' : ''}`); + if (months > 0) parts.push(`${months} month${months !== 1 ? 's' : ''}`); + if (days > 0) parts.push(`${days} day${days !== 1 ? 's' : ''}`); + if (hours > 0) parts.push(`${hours} hour${hours !== 1 ? 's' : ''}`); + if (minutes > 0) parts.push(`${minutes} minute${minutes !== 1 ? 's' : ''}`); + if (seconds > 0) parts.push(`${seconds} second${seconds !== 1 ? 's' : ''}`); + + if (parts.length === 0) { + return diff >= 0 ? 'now' : 'just now'; + } + + const timeString = parts.join(', '); + return diff >= 0 ? `in ${timeString}` : `${timeString} ago`; +} + +function updateTimerDisplay() { + if (!timerDisplay) return; + + const timestamp = parseInt(unixInput.value); + + if (!isNaN(timestamp)) { + timerDisplay.textContent = formatTimeDifference(timestamp); + } else { + timerDisplay.textContent = 'Invalid timestamp'; + } +} + +function updateCurrentTime() { + if (!currentTimeEl) return; + + const timeInfo = getCurrentTimeInTimezone(); + currentTimeEl.innerHTML = `${timeInfo.dateString}
${timeInfo.unixTime}
${timeInfo.timezone}`; + updateTimerDisplay(); +} + +function updateUnixTime() { + if (!datetimePicker || !unixTimeDisplay || !unixInput) return; + + const selectedDate = new Date(datetimePicker.value); + + if (!isNaN(selectedDate.getTime())) { + const unixTime = Math.floor(selectedDate.getTime() / 1000); + const dateString = formatDateInTimezone(selectedDate, currentTimezone); + + unixTimeDisplay.textContent = unixTime; + + if (parseInt(unixInput.value) !== unixTime) { + unixInput.value = unixTime; + updateDateFromUnix(); + } + } +} + +function updateDateFromUnix() { + if (!unixInput || !dateDisplay || !datetimePicker || !timerDisplay) return; + + const unixTime = parseInt(unixInput.value); + + if (!isNaN(unixTime) && unixTime >= 0) { + const date = new Date(unixTime * 1000); + + if (!isNaN(date.getTime())) { + const dateString = formatDateInTimezone(date, currentTimezone); + dateDisplay.textContent = dateString; + + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + const hours = String(date.getHours()).padStart(2, '0'); + const minutes = String(date.getMinutes()).padStart(2, '0'); + + const datetimeLocalValue = `${year}-${month}-${day}T${hours}:${minutes}`; + + if (datetimePicker.value !== datetimeLocalValue) { + datetimePicker.value = datetimeLocalValue; + } + } + } else if (unixInput.value === '') { + dateDisplay.textContent = 'Not set'; + if (dateInfo) dateInfo.textContent = ''; + timerDisplay.textContent = 'Not set'; + } else { + dateDisplay.textContent = 'Invalid timestamp'; + if (dateInfo) dateInfo.textContent = 'Please enter a valid Unix timestamp'; + timerDisplay.textContent = 'Invalid timestamp'; + } + + updateTimerDisplay(); +} + +window.updateTimezone = updateTimezone; +window.updateUnixTime = updateUnixTime; +window.updateDateFromUnix = updateDateFromUnix; + +function createQuickButtons() { + if (!unixInput) return; + + const quickButtons = document.createElement('div'); + quickButtons.className = 'time-buttons'; + + const times = [ + {id: 'now', label: 'Now', type: 'now'}, + {id: 'hourAgo', label: '1 hour ago', type: 'relative', seconds: -3600}, + {id: 'dayAgo', label: '1 day ago', type: 'relative', seconds: -86400}, + {id: 'weekAgo', label: '1 week ago', type: 'relative', seconds: -604800}, + {id: 'hourLater', label: 'in 1 hour', type: 'relative', seconds: 3600}, + {id: 'dayLater', label: 'in 1 day', type: 'relative', seconds: 86400}, + {id: 'weekLater', label: 'in 1 week', type: 'relative', seconds: 604800}, + {id: 'newDay', label: 'Next day', type: 'newDay'}, + {id: 'newYear', label: 'Next New Year', type: 'newYear'} + ]; + + times.forEach(time => { + const button = document.createElement('button'); + button.id = time.id; + + if (time.type === 'newYear') { + const now = new Date(); + const nextYear = now.getFullYear() + 1; + button.textContent = `New Year ${nextYear}`; + } else if (time.type === 'newDay') { + button.textContent = time.label; + } else { + button.textContent = time.label; + } + + button.onclick = function() { + if (!clickCounters[time.id]) { + clickCounters[time.id] = 1; + } else { + clickCounters[time.id]++; + } + + const multiplier = clickCounters[time.id]; + let unixTime; + let baseTime = Math.floor(Date.now() / 1000) + relativeOffset; + + if (time.type === 'now') { + unixTime = Math.floor(Date.now() / 1000); + relativeOffset = 0; + for (const key in clickCounters) { + if (key !== 'newDay' && key !== 'newYear') { + clickCounters[key] = 0; + } + } + } else if (time.type === 'relative') { + relativeOffset += time.seconds; + unixTime = Math.floor(Date.now() / 1000) + relativeOffset; + } else if (time.type === 'newYear') { + const now = new Date(); + const nextYear = now.getFullYear() + multiplier; + button.textContent = `New Year ${nextYear}`; + unixTime = getUnixTimeForNewYear(nextYear, currentTimezone); + } else if (time.type === 'newDay') { + unixTime = getUnixTimeForNextDay(currentTimezone) + (86400 * (multiplier - 1)); + } + + unixInput.value = unixTime; + updateDateFromUnix(); + }; + + quickButtons.appendChild(button); + }); + + const resetButton = document.createElement('button'); + resetButton.textContent = 'Reset counters'; + resetButton.onclick = function() { + relativeOffset = 0; + for (const key in clickCounters) { + clickCounters[key] = 0; + } + + const newYearButton = document.getElementById('newYear'); + if (newYearButton) { + const now = new Date(); + const nextYear = now.getFullYear() + 1; + newYearButton.textContent = `New Year ${nextYear}`; + } + + unixInput.value = Math.floor(Date.now() / 1000); + updateDateFromUnix(); + }; + + quickButtons.appendChild(resetButton); + + unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); +} + +if (currentTimeEl) { + updateCurrentTime(); + setInterval(updateCurrentTime, 1000); +} + +document.addEventListener('DOMContentLoaded', function() { + createQuickButtons(); + updateDateFromUnix(); + updateUnixTime(); }); + From 935196d4564ad394099abf535bb935a4969e2030 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:31:09 +0300 Subject: [PATCH 0812/1179] Update timestamp.md --- src/tools/timestamp.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index a1116d525ce..5c01c661508 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -129,6 +129,9 @@ margin-top: -0.75rem; margin-bottom: -0.75rem !important; } +#date-info { + margin-top: .5rem !important; +} Here you can manage UnixTime for your commands. From f127de769d5ed0fe0e6f4ae69720cf9b5154e53c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:41:22 +0300 Subject: [PATCH 0813/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 5c01c661508..64ea14b9b9c 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -219,5 +219,5 @@ Unix date: ``` ```admonish example -text +You can use [Discord timestamp highlighting](../resources/discordTimestamps.md) to make your code look nicer! ``` From 3cf594ce9b3c98fe13c50c642a453ba485506014 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:50:10 +0300 Subject: [PATCH 0814/1179] Update getEmbedData.md --- src/bdscript/getEmbedData.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/getEmbedData.md b/src/bdscript/getEmbedData.md index dff44d6bd20..0f4bc11cf1f 100644 --- a/src/bdscript/getEmbedData.md +++ b/src/bdscript/getEmbedData.md @@ -17,6 +17,9 @@ $getEmbedData[Channel ID;Message ID;Embed index;Embed property (title/descriptio - `color` - The color border hex of the embed. - `image` - The image of the embed. - `timestamp` - The timestamp of the embed. +```admonish tip title="Timestamp Converter" +You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! +``` ## Example ``` @@ -26,3 +29,4 @@ Description: $getEmbedData[876920205526319144;878299081380876339;1;description] Footer: $getEmbedData[876920205526319144;878299081380876339;1;footer] ``` ![example](https://user-images.githubusercontent.com/69215413/130266834-50421e8e-fe9f-4b2e-8937-c9b870f3296d.png) + From b41825e6aa81f2e118fe598ba2632d451f96496f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:50:41 +0300 Subject: [PATCH 0815/1179] Update getTimestamp.md --- src/bdscript/getTimestamp.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bdscript/getTimestamp.md b/src/bdscript/getTimestamp.md index 1c55763e261..fef9b674114 100644 --- a/src/bdscript/getTimestamp.md +++ b/src/bdscript/getTimestamp.md @@ -6,6 +6,10 @@ Returns the current [unix timestamp](https://www.unixtimestamp.com/) in seconds. $getTimestamp ``` +```admonish tip title="Timestamp Converter" +You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! +``` + ## Example ``` $nomention @@ -30,3 +34,4 @@ Current Unix-time: $getTimestamp > For more info about UNIX timestamps on Discord click [here](../resources/discordTimestamps.md). + From dc0e18bfb735e61413175fd7eaaf0480d6ada042 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:50:53 +0300 Subject: [PATCH 0816/1179] Update getTimestampComplex.md --- src/bdscript/getTimestampComplex.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bdscript/getTimestampComplex.md b/src/bdscript/getTimestampComplex.md index 63f3162e9a8..918751d2437 100644 --- a/src/bdscript/getTimestampComplex.md +++ b/src/bdscript/getTimestampComplex.md @@ -6,6 +6,10 @@ Returns the current [unix timestamp](https://www.unixtimestamp.com/) in the sele $getTimestamp[Time unit] ``` +```admonish tip title="Timestamp Converter" +You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! +``` + ### Parameters - `Time unit` `(Type: Enum || Flag: Required)`: Sets timestamp time unit. @@ -41,3 +45,4 @@ In Nanoseconds - $getTimestamp[ns] > For more info about UNIX timestamps on Discord click [here](../resources/discordTimestamps.md). + From 412506ea0e2f2987d7928e56a100cbe59c1bfbef Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:51:12 +0300 Subject: [PATCH 0817/1179] Update hostingExpireTime.md --- src/bdscript/hostingExpireTime.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bdscript/hostingExpireTime.md b/src/bdscript/hostingExpireTime.md index b8b1514439b..5ab9ccd6c07 100644 --- a/src/bdscript/hostingExpireTime.md +++ b/src/bdscript/hostingExpireTime.md @@ -6,6 +6,10 @@ Returns your bot's hosting expiration date. $hostingExpireTime ``` +```admonish tip title="Timestamp Converter" +You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! +``` + ## Example ``` $nomention @@ -25,3 +29,4 @@ My hosting expiration date: $hostingExpireTime content: | My hosting expiration date: San, 3 Sep 2029 23:59:00 UTC ``` + From aa824142f905b5d381a40cf1db33fcaea80c16ed Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:51:27 +0300 Subject: [PATCH 0818/1179] Update hostingExpireTimeComplex.md --- src/bdscript/hostingExpireTimeComplex.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bdscript/hostingExpireTimeComplex.md b/src/bdscript/hostingExpireTimeComplex.md index 569c50c7314..26e083cb427 100644 --- a/src/bdscript/hostingExpireTimeComplex.md +++ b/src/bdscript/hostingExpireTimeComplex.md @@ -6,6 +6,10 @@ Returns your bot's hosting expiration date. If "yes" is provided, the function r $hostingExpireTime[Return unix timestamp?] ``` +```admonish tip title="Timestamp Converter" +You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! +``` + ### Parameters - `Return unix timestamp?` `(Type: Bool || Flag: Required)`: Whether to return the expiration date in a UNIX timestamp or not. @@ -28,3 +32,4 @@ I will be offline content: | I will be offline
In 4 years
``` + From e3f3b0aa3be849be1155f51799d26ff1bd799421 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:51:44 +0300 Subject: [PATCH 0819/1179] Update lastPinTimestamp.md --- src/bdscript/lastPinTimestamp.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/lastPinTimestamp.md b/src/bdscript/lastPinTimestamp.md index 5fae7c6f072..50087d3712f 100644 --- a/src/bdscript/lastPinTimestamp.md +++ b/src/bdscript/lastPinTimestamp.md @@ -6,6 +6,10 @@ Returns the last pinned message timestamp in the current channel. $lastPinTimestamp ``` +```admonish tip title="Timestamp Converter" +You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! +``` + ## Example ``` $nomention From 3dc09f2a048e4687a1ab226505a6cbcecdf9378c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:52:07 +0300 Subject: [PATCH 0820/1179] Update messageEditedTimestamp.md --- src/bdscript/messageEditedTimestamp.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bdscript/messageEditedTimestamp.md b/src/bdscript/messageEditedTimestamp.md index ab82523e73f..f5f9be69880 100644 --- a/src/bdscript/messageEditedTimestamp.md +++ b/src/bdscript/messageEditedTimestamp.md @@ -1,11 +1,15 @@ # $messageEditedTimestamp -Returns a timestamp of when the message was edited. +Returns an unixtime of when the message was edited. ## Syntax ``` $messageEditedTimestamp[Channel ID;Message ID] ``` +```admonish tip title="Timestamp Converter" +You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! +``` + ### Parameters - `Channel ID` `(Type: Snowflake || Flag: Required)`: The channel ID where the message is. - `Message ID` `(Type: Snowflake || Flag: Required)`: The message ID of the message. @@ -20,4 +24,4 @@ $messageEditedTimestamp[$channelID;$lastMessageID] ```admonish help [How to get the Message/Channel ID guide.](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) -``` \ No newline at end of file +``` From 9be1d7cafe42e5cfdac2774aeded63657ad97752 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:52:28 +0300 Subject: [PATCH 0821/1179] Update lastPinTimestamp.md --- src/bdscript/lastPinTimestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/lastPinTimestamp.md b/src/bdscript/lastPinTimestamp.md index 50087d3712f..2ec2eafd7ba 100644 --- a/src/bdscript/lastPinTimestamp.md +++ b/src/bdscript/lastPinTimestamp.md @@ -1,5 +1,5 @@ # $lastPinTimestamp -Returns the last pinned message timestamp in the current channel. +Returns the last pinned message unixtime in the current channel. ## Syntax ``` From fa083b2aaebd6c113dc7b289de4a62ebba04436e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:52:51 +0300 Subject: [PATCH 0822/1179] Update premiumExpireTime.md --- src/bdscript/premiumExpireTime.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/bdscript/premiumExpireTime.md b/src/bdscript/premiumExpireTime.md index 08a8dda8136..9bb1286a548 100644 --- a/src/bdscript/premiumExpireTime.md +++ b/src/bdscript/premiumExpireTime.md @@ -1,15 +1,19 @@ # $premiumExpireTime Returns how long until premium expires. - + ```admonish info Returns `expired` if the bot is not premium. -``` +``` ## Syntax ``` $premiumExpireTime[(Return unix timestamp?)] ``` +```admonish tip title="Timestamp Converter" +You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! +``` + ### Parameters - `Return unix timestamp?` `(Type: Bool || Flag: Optional)`: If "yes" is written, it will return the premium expiration value in UNIX timestamp and if "no", it will output as normal time format. Defaults to "no". @@ -45,3 +49,4 @@ My premium expires in: $premiumExpireTime (Unix Timestamp: $premiumExpireTime[ye content: | My premium expires in: expired (Unix Timestamp: expired) ``` + From ac327c4bebfc762805f49da5aa8605697e407869 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:58:18 +0300 Subject: [PATCH 0823/1179] Update discordTimestamps.md --- src/resources/discordTimestamps.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/resources/discordTimestamps.md b/src/resources/discordTimestamps.md index 1e5cf9fd982..aa2b48782a8 100644 --- a/src/resources/discordTimestamps.md +++ b/src/resources/discordTimestamps.md @@ -1,6 +1,10 @@ # Discord Timestamps Discord timestamps are used to provide time in multiple formats. The information is given according to the user's timezone and locale. Discord timestamps are built with the Unix Time system, meaning that they are dynamic. These can be used by anyone; This includes users, webhooks, and applications. +```admonish tip title="Timestamp Converter" +You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! +``` + ## Syntax Timestamp syntax: `` @@ -23,13 +27,13 @@ The default style is `f`, if no style provided. ## Usability Functions which return UNIX timestamp: -- [`$getEmbedData[]`](../getEmbedData.md) -- [`$getTimestamp`](../getTimestamp.md) -- [`$getTimestamp[]`](../getTimestampComplex.md) -- [`$hostingExpireTime`](../hostingExpireTime.md) -- [`$hostingExpireTime[]`](../hostingExpireTimeComplex.md) -- [`$lastPinTimestamp`](../lastPinTimestamp.md) -- [`$messageEditedTimestamp[]`](../messageEditedTimestamp.md) +- [`$getEmbedData[]`](../getEmbedData.md) +- [`$getTimestamp`](../getTimestamp.md) +- [`$getTimestamp[]`](../getTimestampComplex.md) +- [`$hostingExpireTime`](../hostingExpireTime.md) +- [`$hostingExpireTime[]`](../hostingExpireTimeComplex.md) +- [`$lastPinTimestamp`](../lastPinTimestamp.md) +- [`$messageEditedTimestamp[]`](../messageEditedTimestamp.md) - [`$premiumExpireTime`](../premiumExpireTime.md) ### Example @@ -38,3 +42,4 @@ $nomention ``` ![image](https://user-images.githubusercontent.com/113247745/199022364-84ebdc91-4259-4f1f-9299-832784349db4.png) + From 2c0b45be0f751fa808d74e6f692d57240a9329ec Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 15 Jan 2026 13:00:33 +0300 Subject: [PATCH 0824/1179] Update settings.md --- src/settings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/settings.md b/src/settings.md index 4cf16d430d0..d9cec07f8fd 100644 --- a/src/settings.md +++ b/src/settings.md @@ -222,7 +222,7 @@ Let's customize your experience in our Bot Designer For Discord wiki world!
-

0 / 10000

+

0 / 25000

``` From 2fbb5853afe1917f42f63d091e720ed4158e1177 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 15 Jan 2026 13:01:00 +0300 Subject: [PATCH 0825/1179] Update settings.md --- src/settings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/settings.md b/src/settings.md index d9cec07f8fd..7ff5bcfe93a 100644 --- a/src/settings.md +++ b/src/settings.md @@ -220,7 +220,7 @@ Let's customize your experience in our Bot Designer For Discord wiki world! - +

0 / 25000

From 61e00fabf9a31eb399886dffef562755ccda62c3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 15 Jan 2026 13:02:02 +0300 Subject: [PATCH 0826/1179] Update index.js --- src/theme/settings/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/theme/settings/index.js b/src/theme/settings/index.js index e04f310954a..55043723aba 100644 --- a/src/theme/settings/index.js +++ b/src/theme/settings/index.js @@ -579,9 +579,9 @@ function updateCodeHG() { const jsonHG = codeInput.value; const charCount = codeInput.value.replace(/[\s\n]/g, "").length; // Ignore spaces and new rows - charCountElement.textContent = `${charCount} / 10000`; + charCountElement.textContent = `${charCount} / 25000`; - if (charCount >= 10000) { + if (charCount > 25000) { charCountElement.style.color = "red"; } else { charCountElement.style.color = document.body.style.color; From 313105be53ce0cf9abfda1e53d856c1844836b09 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 15 Jan 2026 13:02:41 +0300 Subject: [PATCH 0827/1179] Update index.js --- src/theme/settings/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/settings/index.js b/src/theme/settings/index.js index 55043723aba..7bbd3ebd08f 100644 --- a/src/theme/settings/index.js +++ b/src/theme/settings/index.js @@ -107,7 +107,7 @@ function resetHGInput() { var inputcodedesign = JSON.stringify(codeScheme); const charJSONCount = inputcodedesign.length; - charCountElement.textContent = `${charJSONCount} / 10000`; + charCountElement.textContent = `${charJSONCount} / 25000`; charCountElement.style.color = document.body.style.color; codeInput.style.boxShadow = "none"; From 34e775bc53767c6a284b46ee0c92befd0c1b0ddf Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:16:18 +0300 Subject: [PATCH 0828/1179] Create permissionscalculator.md --- src/tools/permissionscalculator.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/tools/permissionscalculator.md diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md new file mode 100644 index 00000000000..302d7902e7e --- /dev/null +++ b/src/tools/permissionscalculator.md @@ -0,0 +1,27 @@ +# Permission Calculator + +
+ + +
+ +
+ +
+ +
+

Current Permission Value:

+
0
+
0x0
+
+ +
+ +
+ +
+

Search Results:

+
+ Select permissions and/or enter a value to find combinations +
+
\ No newline at end of file From de49c7b1bca461a32114d83dc4c2669d511b103f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:19:43 +0300 Subject: [PATCH 0829/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 855259f02f5..e4d0f3e06be 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -43,6 +43,7 @@ - [Common BDFD Errors](./guides/other/commonErrors.md) - [Tools]() + - [Permission Calculator](./tools/permissionscalculator.md) - [Color](./tools/color.md) - [Code Editor](./tools/editor.md) - [Timestamp Converter](./tools/timestamp.md) From c6aa469998b8e4f3c32e56e0b1b125297f0f5d35 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:37:43 +0300 Subject: [PATCH 0830/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 642 ++++++++++++++++++++++++++++- 1 file changed, 641 insertions(+), 1 deletion(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index 302d7902e7e..a4e565631a9 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -1,4 +1,252 @@ # Permission Calculator +Example + +
@@ -24,4 +272,396 @@
Select permissions and/or enter a value to find combinations
-
\ No newline at end of file +
+ + \ No newline at end of file From a49210d1f9a92362338d39b792e0969df2103020 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:42:17 +0300 Subject: [PATCH 0831/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index a4e565631a9..5aae6f0d917 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -274,7 +274,7 @@ Example
- \ No newline at end of file From a64ded9234ef1e1f5c3abea47813ed85d9ac2eeb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 16 Jan 2026 13:23:45 +0300 Subject: [PATCH 0834/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 707 +++++++++++++---------------- 1 file changed, 327 insertions(+), 380 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index c20acddd500..887b2ccd77e 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -259,388 +259,335 @@ Example text! } -
- - -
- -
- -
-
General Server Permissions
- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
-
Member Management
- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
-
Channel Management
- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
-
Text Permissions
- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - - -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
-
Voice Permissions
- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
-
Other Permissions
- -
- -
- - -
- -
- - -
- -
- - -
- -
-

Current Permission Value:

-
0
-
0x0
-
- -
- -
- -
-

Search Results:

-
- Select permissions and/or enter a value to find combinations -
+
+ + +
+ +
+
+
General Server Permissions
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
Member Management
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
Channel Management
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
Text Permissions
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
Voice Permissions
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
Other Permissions
+ +
+
+ + +
+
+ + +
+
+ + +
+
+

Current Permission Value:

+
0
+
0x0
+
+
+ +
+
+

Search Results:

+
+ Select permissions and/or enter a value to find combinations
+
+
- \ No newline at end of file + \ No newline at end of file From 00388a3d2b0ea1989cdd5151d638ef4dc6765128 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 16 Jan 2026 16:14:20 +0300 Subject: [PATCH 0837/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index ce1ac9c1c82..fc8c6715739 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -1,6 +1,8 @@ # Permission Calculator Example text! + + +
From ac3b14c3d8f0f5965b1656032f1a5abbd8ffe6d2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 16 Jan 2026 17:15:09 +0300 Subject: [PATCH 0852/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index 207e8f24811..b10f284612d 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -142,7 +142,7 @@ Example text! padding: 15px 0; } .combination { - background-color: #2f3136; + background-color: var(--color2); padding: 12px; margin: 10px 0; border-radius: 6px; @@ -186,7 +186,7 @@ Example text! border-top: 1px solid #40444b; } .current-selection { - background-color: #2f3136; + background-color: var(--color2); padding: 12px; border-radius: 6px; margin: 15px 0; From 4c1a59f5481bd69aa8f4af3ba7e6a5b7f90b1294 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 16 Jan 2026 17:25:29 +0300 Subject: [PATCH 0853/1179] Update index.js --- src/theme/settings/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/settings/index.js b/src/theme/settings/index.js index 7bbd3ebd08f..9225fe91401 100644 --- a/src/theme/settings/index.js +++ b/src/theme/settings/index.js @@ -720,7 +720,7 @@ function loadSettings() { var inputcodedesign = JSON.stringify(codedesign); const charJSONCount = inputcodedesign.length; - charCountElement.textContent = `${charJSONCount} / 10000`; + charCountElement.textContent = `${charJSONCount} / 25000`; codeTextInput.value = inputcodedesign; } From deee11ec4af475ffce5e524ad1fa73d83986ffcb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 10:13:05 +0300 Subject: [PATCH 0854/1179] Update SUMMARY.md --- src/SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 06d22639bfe..f4e7a48a23e 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -44,7 +44,7 @@ - [Tools]() - [Color](./tools/color.md) - - [Code Editor](./tools/editor.md) + - [Text Editor](./tools/editor.md) - [Permission Calculator](./tools/permissionscalculator.md) - [Timestamp Converter](./tools/timestamp.md) From 9c4fcfab531bac2a5acfb7b874666d37f5cc0ad7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 12:16:12 +0300 Subject: [PATCH 0855/1179] Update permcalc.js --- src/tools/permcalc.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/tools/permcalc.js b/src/tools/permcalc.js index 5576d90483f..b4d69747d77 100644 --- a/src/tools/permcalc.js +++ b/src/tools/permcalc.js @@ -76,10 +76,15 @@ function initializePermissionValues() { checkboxes.forEach(checkbox => { const permissionName = checkbox.id; - const permissionValue = BigInt(checkbox.value); + // Используем функцию permission() для получения значения + const permissionValue = permission(permissionName); + + // Получаем название права из label + const label = document.querySelector(`label[for="${permissionName}"]`); + const permissionLabel = label ? label.textContent.trim().split('\n')[0] : permissionName; permissionValues.set(permissionName, { - name: document.querySelector(`label[for="${permissionName}"]`).textContent.trim().split('\n')[0], + name: permissionLabel, value: permissionValue }); }); @@ -165,7 +170,8 @@ function updateTotal() { const checkboxes = document.querySelectorAll('input[type="checkbox"]:checked'); checkboxes.forEach(checkbox => { - total += BigInt(checkbox.value); + // Используем функцию permission() для получения значения + total += permission(checkbox.id); // Add class for highlighting selected element document.getElementById(`item-${checkbox.id}`).classList.add('checked'); @@ -222,7 +228,7 @@ function findCombinations() { // Get currently selected permissions const checkedBoxes = Array.from(document.querySelectorAll('input[type="checkbox"]:checked')); const checkedPerms = checkedBoxes.map(cb => cb.id); - const checkedSum = checkedBoxes.reduce((sum, cb) => sum + BigInt(cb.value), 0n); + const checkedSum = checkedBoxes.reduce((sum, cb) => sum + permission(cb.id), 0n); // If input field is empty if (!targetValue) { @@ -364,4 +370,6 @@ function formatBinarySum(combination) { // Initialize on load document.addEventListener('DOMContentLoaded', initializeInterface); -window.permission = permission; + +// Export permission function to global scope for easy testing +window.permission = permission; \ No newline at end of file From b61da4fd15432900070b0eafa937f9a51e6db7b7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 12:19:06 +0300 Subject: [PATCH 0856/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index b10f284612d..5628772185b 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -78,7 +78,7 @@ Example text! accent-color: var(--color2); } .total-section { - background-color: #202225; + background-color: var(--color3); padding: 20px; border-radius: 8px; margin: 25px 0; @@ -125,7 +125,7 @@ Example text! color: #72767d; } .results { - background-color: #202225; + background-color: var(--color3); padding: 20px; border-radius: 8px; margin-top: 20px; @@ -134,7 +134,7 @@ Example text! margin-top: 0; color: #ffffff; font-size: 18px; - border-bottom: 2px solid #7289da; + border-bottom: 2px solid var(--color2); padding-bottom: 10px; } .result-content { @@ -560,4 +560,4 @@ Example text! Select permissions and/or enter a value to find combinations
-
\ No newline at end of file +
From efa07d610351d8230d80a5899e6d8af9dcd56e57 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 12:27:19 +0300 Subject: [PATCH 0857/1179] Update permcalc.js --- src/tools/permcalc.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tools/permcalc.js b/src/tools/permcalc.js index b4d69747d77..ced6dbe8caa 100644 --- a/src/tools/permcalc.js +++ b/src/tools/permcalc.js @@ -179,7 +179,10 @@ function updateTotal() { // Remove class from unselected elements document.querySelectorAll('input[type="checkbox"]:not(:checked)').forEach(checkbox => { - document.getElementById(`item-${checkbox.id}`).classList.remove('checked'); + const itemElement = document.getElementById(`item-${checkbox.id}`); + if (itemElement) { + itemElement.classList.remove('checked'); + } }); // Update category states and toggle button texts From 17b8e878a3909b749120dcdbf0d86db2a45df6af Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 12:31:15 +0300 Subject: [PATCH 0858/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 87 +++++++++++++++--------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index 5628772185b..f8cad1f49bd 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -5,56 +5,55 @@ Example text! From 93d96ca27f14943d1eeaaaf8c52fc08c80efbacb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 14:11:30 +0300 Subject: [PATCH 0872/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index d0e99efefc1..d8ccc5c0596 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -225,7 +225,6 @@ input[type="checkbox"] { color: #fff; background: hsl(0deg 0% 100% / 7%); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); - flex: 1; transition: all 0.2s; text-align: center; } From aa5ab2f0eebe7f8f04e41c2de2505d0e8a30e4ff Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 14:12:29 +0300 Subject: [PATCH 0873/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index d8ccc5c0596..35ce89a620b 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -27,7 +27,7 @@ Example text! color: #fff; background: hsl(0deg 0% 100% / 7%); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); - flex: 1 + flex: 1; transition: all 0.2s; text-align: center; } From e11b0addae560dde56be7a78fd618870571fc0bc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 20:39:22 +0300 Subject: [PATCH 0874/1179] Update webhooks.md --- src/guides/general/webhooks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 671e6349c10..0fb52714d13 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -2,7 +2,7 @@ This wiki explains how to create and use webhooks in BDFD. ## Content -[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) +[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) > [**$webhookSend[]**](#webhooksend) > [**$webhookDelete[]**](#webhookDelete) > [**$webhookAvatarURL[]**](#webhookavatarurl) > [**$webhookUsername[]**](#webhookusername) > [**$webhookTitle[]**](#webhooktitle) > [**$webhookDescription[]**](#webhookdescription) > [**$webhookFooter[]**](#webhookfooter) > [**$webhookContent[]**](#webhookcontent) > [**$webhookColor[]**](#webhookcolor) ## Functions Used - [`$webhookCreate[]`](../../bdscript/webhookCreate.md) @@ -52,7 +52,7 @@ Sends message as the webhook. ## Syntax ``` -$webhookSend[Webhook URL;(Content;Title;Title URL;Description;Color;Author;Author icon URL;Footer;Footer icon URL;Thumbnail URL;Image URL;Add timestamp?)] +$webhookSend[Webhook URL;(Content;Title;Title URL;Description;Color hex;Author;Author icon URL;Footer;Footer icon URL;Thumbnail URL;Image URL;Add timestamp?)] ``` ### Parameters From 0a4dc23641be140e93cbc2bc5eb911b75cd0835a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 20:45:02 +0300 Subject: [PATCH 0875/1179] Update sendEmbedMessage.md --- src/bdscript/sendEmbedMessage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/sendEmbedMessage.md b/src/bdscript/sendEmbedMessage.md index 8aecf777dfa..7b46c03c631 100644 --- a/src/bdscript/sendEmbedMessage.md +++ b/src/bdscript/sendEmbedMessage.md @@ -3,7 +3,7 @@ Sends an embed message to the provided channel. Not needed fields can be left em ## Syntax ``` -$sendEmbedMessage[Channel ID;Content;(Title;Title URL;Description;Color;Author;Author icon;Footer;Footer icon;Thumbnail;Image;Add timestamp?;Return ID?)] +$sendEmbedMessage[Channel ID;Content;(Title;Title URL;Description;Color hex;Author;Author icon;Footer;Footer icon;Thumbnail;Image;Add timestamp?;Return ID?)] ``` ### Parameters @@ -12,7 +12,7 @@ $sendEmbedMessage[Channel ID;Content;(Title;Title URL;Description;Color;Author;A - `Title` `(Type: String || Flag: Vacantable)`: The text that will be used as the title. - `Title URL` `(Type: URL || Flag: Vacantable)`: The URL that will be applied to the title. - `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. -- `Color` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. +- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. ```admonish tip title="Color Picker" You can use our ["Color" tool](../tools/color.md) to select the best color! ``` From 1e70c26be780c6b1100a0bbc91c82551278c68fc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 20:50:17 +0300 Subject: [PATCH 0876/1179] Update webhooks.md --- src/guides/general/webhooks.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 0fb52714d13..175805754d9 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -56,6 +56,23 @@ $webhookSend[Webhook URL;(Content;Title;Title URL;Description;Color hex;Author;A ``` ### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Content` `(Type: String || Flag: Vacantable)`: The text that is shown above the embed. +- `Title` `(Type: String || Flag: Vacantable)`: The text that will be used as the title. +- `Title URL` `(Type: URL || Flag: Vacantable)`: The URL that will be applied to the title. +- `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. +- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../tools/color.md) to select the best color! +``` + +- `Author` `(Type: String || Flag: Vacantable )`: The text that appears at the author. +- `Author icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the author. +- `Footer` `(Type: String || Flag: Vacantable)`: The text to set the footer as. +- `Footer icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the footer. +- `Thumbnail` `(Type: URL || Flag: Vacantable)`: The image to set as the thumbnail. +- `Image` `(Type: URL || Flag: Vacantable)`: The image that appears above the footer. +- `Add timestamp?` `(Type: Bool || Flag: Vacantable)`: Adds a timestamp to the footer. ## Example ``` @@ -73,6 +90,7 @@ $webhookDelete[Webhook URL] ``` ### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to delete. ## Example ``` From 79924b7a46d2527fe9f92e74a6baf6acea4a5492 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:11:07 +0300 Subject: [PATCH 0877/1179] Update webhooks.md --- src/guides/general/webhooks.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 175805754d9..cdf8312db48 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -35,7 +35,7 @@ $webhookCreate[Channel ID;Username;(Avatar URL)] ``` $nomention $webhookCreate[$channelID;BDFD Webhook 🤖] -``` +``` ~~~admonish tip You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../variables.md) to store the Webhook URL. @@ -44,6 +44,8 @@ You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../v $var[Webhook;$webhookCreate[$channelID;Secret]] Created and saved! ``` + +> How [`$var[]`](../../bdscript/var.md) works? ~~~ @@ -63,7 +65,7 @@ $webhookSend[Webhook URL;(Content;Title;Title URL;Description;Color hex;Author;A - `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. - `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. ```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! +You can use our ["Color" tool](../../tools/color.md) to select the best color! ``` - `Author` `(Type: String || Flag: Vacantable )`: The text that appears at the author. @@ -80,6 +82,10 @@ $nomention $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookSend[$var[webhook];I'm the best webhook;Title;;It's description!;#000;;;;;;false] ``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookDelete Deletes the wehook. From 68123b59d9c117c3216c8365fa72cceb8d1cf790 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:12:15 +0300 Subject: [PATCH 0878/1179] Update webhooks.md --- src/guides/general/webhooks.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index cdf8312db48..73e4a89d617 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -36,6 +36,10 @@ $webhookCreate[Channel ID;Username;(Avatar URL)] $nomention $webhookCreate[$channelID;BDFD Webhook 🤖] ``` + +```admonish question title="What is this?" +How [`$channelID`](../../bdscript/channelID.md) works? +``` ~~~admonish tip You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../variables.md) to store the Webhook URL. @@ -45,7 +49,7 @@ $var[Webhook;$webhookCreate[$channelID;Secret]] Created and saved! ``` -> How [`$var[]`](../../bdscript/var.md) works? +> How [`$var[]`](../../bdscript/var.md) and [`$channelID`](../../bdscript/channelID.md) works? ~~~ From 9cc0953f9d686cd80f0a02ef7ff8bf3f9e7085c0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:14:50 +0300 Subject: [PATCH 0879/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 73e4a89d617..6ab70488957 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -42,7 +42,7 @@ How [`$channelID`](../../bdscript/channelID.md) works? ``` ~~~admonish tip -You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../variables.md) to store the Webhook URL. +You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../guides/introduction/variables.md) to store the Webhook URL. ```$nomention $var[Webhook;$webhookCreate[$channelID;Secret]] From 6efd44f8ee56c3d2e57910763dc5759077e80594 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:16:39 +0300 Subject: [PATCH 0880/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 6ab70488957..45ad1bc1971 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -202,7 +202,7 @@ Adds color to the webhook. ## Syntax ``` -$webhookContent[Webhook URL;Color] +$webhookColor[Webhook URL;Color hex] ``` ### Parameters From 4b26c8c132eafac1fe6ba631651f12a54dd7991c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:17:29 +0300 Subject: [PATCH 0881/1179] Update color.md --- src/tools/color.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/color.md b/src/tools/color.md index 078bacce717..195d57dad17 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -179,6 +179,7 @@ You can use color hex in the "Color hex" parameters. - [`$embedSuppressErrors[]`](../bdscript/embedSuppressErrors.md) - [`$modifyRole[]`](../bdscript/modifyRole.md) - [`$sendEmbedMessage[]`](../bdscript/sendEmbedMessage.md) +- [`$webhookColor[]`](../bdscript/webhookColor.md) - [`$webhookSend[]`](../bdscript/webhookSend.md) **GET**: From ec5c8b40fb39dac7ec58d3c214a365c43038d0b7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:22:25 +0300 Subject: [PATCH 0882/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 6b7ad2d5461..10cd085ac36 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -95,7 +95,7 @@ Here you can use the basic editor features to write codes more conveniently. margin-bottom: -.5rem; margin-top: .5rem; font-size: 1rem; - color: #9e9e9e; + color: var(--color2); } #searchText, #replaceText { From 32d5150053b747140cb67e1d378a6f0d53943484 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:23:54 +0300 Subject: [PATCH 0883/1179] Update editor.md --- src/tools/editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 10cd085ac36..b97a6f131db 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -100,7 +100,7 @@ Here you can use the basic editor features to write codes more conveniently. #searchText, #replaceText { background: hsl(0deg 0% 100% / 7%); - color: #bbb; + color: #fff; font-size: 1.5rem; display: block; outline: none; From 7d5c694c9fa2ec378d31e654e2cf4ca189f59cf9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:26:09 +0300 Subject: [PATCH 0884/1179] Update editor.md --- src/tools/editor.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index b97a6f131db..7f25dcaabaf 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -50,7 +50,7 @@ Here you can use the basic editor features to write codes more conveniently. max-height: 100em; border-radius: 10px; border-width: 0; - color: #bbb; + color: #fff; background: hsl(0deg 0% 100% / 7%); padding: 7px; font-size: 1.5rem; @@ -156,7 +156,7 @@ Here you can use the basic editor features to write codes more conveniently. #highlightedText { overflow-x: auto; - color: #bbb; + color: #fff; font-size: 1.5rem; border-radius: 10px; border-width: 0; From 0e624b40c054d0e33241c587f6f8899bc08bf7b0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:26:37 +0300 Subject: [PATCH 0885/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 195d57dad17..64088c3b209 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -34,7 +34,7 @@ } .hex-input { flex: 1; - color: #bbb; + color: #fff; padding: 10px; background: hsl(0deg 0% 100% / 7%); border-radius: 10px; From 264c24733fb398f5326e22252aaaa275becf814f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:26:58 +0300 Subject: [PATCH 0886/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 8a8d024bf4a..9fb94c74382 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -33,7 +33,7 @@ color: #34495e; } .converter-section input { - color: #bbb; + color: #fff; padding: 2.25rem !important; width: 100%; max-width: 100%; From 008221782e8a403b5f38dc6aa071fad782fc04e6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:28:15 +0300 Subject: [PATCH 0887/1179] Update style.css --- src/theme/settings/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/settings/style.css b/src/theme/settings/style.css index 4cc0c38ca9a..2bdcbb30d0e 100644 --- a/src/theme/settings/style.css +++ b/src/theme/settings/style.css @@ -191,7 +191,7 @@ button:not(#menu-bar i, #menu-bar .icon-button) { max-height: 35em; border-radius: 10px; border-width: 0; - color: #bbb; + color: #fff; background: hsl(0deg 0% 100% / 7%); padding: 7px; font-size: 1.5rem; From 1ac1e598dc2216a93f96eb8369401c0f9fb722d0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:41:44 +0300 Subject: [PATCH 0888/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 45ad1bc1971..79f6da6e9ab 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -42,7 +42,7 @@ How [`$channelID`](../../bdscript/channelID.md) works? ``` ~~~admonish tip -You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../guides/introduction/variables.md) to store the Webhook URL. +You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../introduction/variables.md) to store the Webhook URL. ```$nomention $var[Webhook;$webhookCreate[$channelID;Secret]] From 0bb8df1092a5a137168f03ff43e8c3857fcc8951 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:58:52 +0300 Subject: [PATCH 0889/1179] Update webhooks.md --- src/guides/general/webhooks.md | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 79f6da6e9ab..b0ee596aae8 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -67,7 +67,7 @@ $webhookSend[Webhook URL;(Content;Title;Title URL;Description;Color hex;Author;A - `Title` `(Type: String || Flag: Vacantable)`: The text that will be used as the title. - `Title URL` `(Type: URL || Flag: Vacantable)`: The URL that will be applied to the title. - `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. -- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. +- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../../tools/color.md) to set the embed border color as. You can also use color integer number. ```admonish tip title="Color Picker" You can use our ["Color" tool](../../tools/color.md) to select the best color! ``` @@ -116,6 +116,7 @@ $webhookAvatarURL[Webhook URL;Avatar URL] ``` ### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to modify. ## Example ``` @@ -131,6 +132,7 @@ $webhookUsername[Webhook URL;Username] ``` ### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to modify. ## Example ``` @@ -146,6 +148,7 @@ $webhookTitle[Webhook URL;Text] ``` ### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. ## Example ``` @@ -161,6 +164,7 @@ $webhookDescription[Webhook URL;Text] ``` ### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. ## Example ``` @@ -176,6 +180,7 @@ $webhookFooter[Webhook URL;Text] ``` ### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. ## Example ``` @@ -190,12 +195,19 @@ Adds content to the webhook. $webhookContent[Webhook URL;Text] ``` -### Parameters +### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. ## Example ``` -$nomention +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookContent[$var[webhook];Hello from my webhook!] ``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookColor Adds color to the webhook. @@ -206,9 +218,19 @@ $webhookColor[Webhook URL;Color hex] ``` ### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../../tools/color.md) to set the embed border color as. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../../tools/color.md) to select the best color! +``` ## Example ``` -$nomention +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookColor[$var[webhook];#00FF00] +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? ``` - From 9397fa4ecdd38dea32303dad6c24c707f09d3b80 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 22:02:58 +0300 Subject: [PATCH 0890/1179] Update threads.md --- src/guides/general/threads.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/guides/general/threads.md b/src/guides/general/threads.md index 194a2f4cb1a..6b52af8363b 100644 --- a/src/guides/general/threads.md +++ b/src/guides/general/threads.md @@ -197,5 +197,7 @@ $threadAddMember[$var[id];$authorID] content: | BDFD Support added RainbowKey to the thread. ``` -\ -> If you want to learn more about threads, read [Discord's support article](https://support.discord.com/hc/en-us/articles/4403205878423-Threads-FAQ). + +```admonish note +If you want to learn more about threads, read [Discord's support article](https://support.discord.com/hc/en-us/articles/4403205878423-Threads-FAQ). +``` From 1093bf0a46476208bb6b461add096685992b7b22 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 22:11:55 +0300 Subject: [PATCH 0891/1179] Update webhooks.md --- src/guides/general/webhooks.md | 51 ++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index b0ee596aae8..ecd4f7b462d 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -104,8 +104,15 @@ $webhookDelete[Webhook URL] ## Example ``` -$nomention +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookDelete[$var[webhook]] +Deleted! ``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookAvatarURL Changes the webhook's avatar. @@ -120,8 +127,15 @@ $webhookAvatarURL[Webhook URL;Avatar URL] ## Example ``` -$nomention +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookAvatarURL[$var[webhook];$authorAvatar] +New avatar! ``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookUsername Changes the webhook's username. @@ -136,8 +150,15 @@ $webhookUsername[Webhook URL;Username] ## Example ``` -$nomention +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookUsername[$var[webhook];BDFD Support] +New username! ``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookTitle Adds title to the webhook. @@ -152,8 +173,14 @@ $webhookTitle[Webhook URL;Text] ## Example ``` -$nomention +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookTitle[$var[webhook];My Webhook Title] ``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookDescription Adds description to the webhook. @@ -168,8 +195,14 @@ $webhookDescription[Webhook URL;Text] ## Example ``` -$nomention +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookDescription[$var[webhook];This is a detailed description for my webhook.] ``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookFooter Adds footer to the webhook. @@ -184,8 +217,14 @@ $webhookFooter[Webhook URL;Text] ## Example ``` -$nomention +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookFooter[$var[webhook];Footer Text Here] ``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookContent Adds content to the webhook. From 2239a68d2b812a72ae61c8a02a3b75d07b4c5e91 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 22:12:30 +0300 Subject: [PATCH 0892/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index ecd4f7b462d..31311dd1aac 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -134,7 +134,7 @@ New avatar! ``` ```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md), [`$var[]`](../../bdscript/var.md) and [`$authorAvatar`](../../bdscript/authorAvatar.md) works? ``` # $webhookUsername From b4fd79f9bf4454cee4887c3732d0a48c11a8a994 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 22:29:08 +0300 Subject: [PATCH 0893/1179] Update webhooks.md --- src/guides/general/webhooks.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 31311dd1aac..8c4176117f3 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -119,11 +119,12 @@ Changes the webhook's avatar. ## Syntax ``` -$webhookAvatarURL[Webhook URL;Avatar URL] +$webhookAvatarURL[Webhook URL;New avatar URL] ``` ### Parameters - `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to modify. +- `New avatar URL` `(Type: URL || Flag: Required)`: The new avatar image URL for the webhook. ## Example ``` @@ -142,11 +143,12 @@ Changes the webhook's username. ## Syntax ``` -$webhookUsername[Webhook URL;Username] +$webhookUsername[Webhook URL;New username] ``` ### Parameters - `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to modify. +- `New username` `(Type: String || Flag: Required)`: The new username for the webhook. ## Example ``` @@ -170,6 +172,7 @@ $webhookTitle[Webhook URL;Text] ### Parameters - `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The title text to add to the embed of the webhook. ## Example ``` @@ -192,6 +195,7 @@ $webhookDescription[Webhook URL;Text] ### Parameters - `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The description text to add to the embed of the webhook. ## Example ``` @@ -214,6 +218,7 @@ $webhookFooter[Webhook URL;Text] ### Parameters - `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The footer text to add to the embed of the webhook. ## Example ``` @@ -236,6 +241,7 @@ $webhookContent[Webhook URL;Text] ### Parameters - `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The content text to add to the webhook. ## Example ``` From a2b42f0a0ca2c47c2e14f3325777a3cf5a2e3832 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 22:36:31 +0300 Subject: [PATCH 0894/1179] Update webhooks.md --- src/guides/general/webhooks.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 8c4176117f3..f4ff657f967 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -2,7 +2,7 @@ This wiki explains how to create and use webhooks in BDFD. ## Content -[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) > [**$webhookSend[]**](#webhooksend) > [**$webhookDelete[]**](#webhookDelete) > [**$webhookAvatarURL[]**](#webhookavatarurl) > [**$webhookUsername[]**](#webhookusername) > [**$webhookTitle[]**](#webhooktitle) > [**$webhookDescription[]**](#webhookdescription) > [**$webhookFooter[]**](#webhookfooter) > [**$webhookContent[]**](#webhookcontent) > [**$webhookColor[]**](#webhookcolor) +[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) > [**$webhookSend[]**](#webhooksend) > [**$webhookDelete[]**](#webhookDelete) > [**$webhookAvatarURL[]**](#webhookavatarurl) > [**$webhookUsername[]**](#webhookusername) > [**$webhookTitle[]**](#webhooktitle) > [**$webhookDescription[]**](#webhookdescription) > [**$webhookFooter[]**](#webhookfooter) > [**$webhookContent[]**](#webhookcontent) > [**$webhookColor[]**](#webhookcolor) >[Beautiful Webhook](#beautiful-webhook) ## Functions Used - [`$webhookCreate[]`](../../bdscript/webhookCreate.md) @@ -273,9 +273,17 @@ You can use our ["Color" tool](../../tools/color.md) to select the best color! ``` $nomention $var[webhook;$webhookCreate[$channelID;Test webhook]] -$webhookColor[$var[webhook];#00FF00] +$webhookColor[$var[webhook];#000] ``` ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? -``` +``` + +# Beautiful webhook +Here is one example of how to use a webhook. + +``` +$nomention +$var[webhook;$webhookCreate[$channelID;I'm webhook 😎]] +``` \ No newline at end of file From caa44f7afefe592a37ec62051a1005c6d00918d9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 22:36:47 +0300 Subject: [PATCH 0895/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index f4ff657f967..56e81eed726 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -2,7 +2,7 @@ This wiki explains how to create and use webhooks in BDFD. ## Content -[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) > [**$webhookSend[]**](#webhooksend) > [**$webhookDelete[]**](#webhookDelete) > [**$webhookAvatarURL[]**](#webhookavatarurl) > [**$webhookUsername[]**](#webhookusername) > [**$webhookTitle[]**](#webhooktitle) > [**$webhookDescription[]**](#webhookdescription) > [**$webhookFooter[]**](#webhookfooter) > [**$webhookContent[]**](#webhookcontent) > [**$webhookColor[]**](#webhookcolor) >[Beautiful Webhook](#beautiful-webhook) +[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) > [**$webhookSend[]**](#webhooksend) > [**$webhookDelete[]**](#webhookDelete) > [**$webhookAvatarURL[]**](#webhookavatarurl) > [**$webhookUsername[]**](#webhookusername) > [**$webhookTitle[]**](#webhooktitle) > [**$webhookDescription[]**](#webhookdescription) > [**$webhookFooter[]**](#webhookfooter) > [**$webhookContent[]**](#webhookcontent) > [**$webhookColor[]**](#webhookcolor) > [Beautiful Webhook](#beautiful-webhook) ## Functions Used - [`$webhookCreate[]`](../../bdscript/webhookCreate.md) From ccaf5a6fdfcae3f234c8543867b4d994a403ace9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 22:39:36 +0300 Subject: [PATCH 0896/1179] Update webhooks.md --- src/guides/general/webhooks.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 56e81eed726..4df7da073f9 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -1,5 +1,9 @@ # Webhooks This wiki explains how to create and use webhooks in BDFD. + +```admonish warning +In this wiki we use functions that only work on [BDScript 2](../introduction/variables.md). We recommend you to use the same script language to avoid problems with examples. +``` ## Content [**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) > [**$webhookSend[]**](#webhooksend) > [**$webhookDelete[]**](#webhookDelete) > [**$webhookAvatarURL[]**](#webhookavatarurl) > [**$webhookUsername[]**](#webhookusername) > [**$webhookTitle[]**](#webhooktitle) > [**$webhookDescription[]**](#webhookdescription) > [**$webhookFooter[]**](#webhookfooter) > [**$webhookContent[]**](#webhookcontent) > [**$webhookColor[]**](#webhookcolor) > [Beautiful Webhook](#beautiful-webhook) From 62f9035dd3929ff7dffcbb2b4c183c16f8893b3f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 22:40:17 +0300 Subject: [PATCH 0897/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 4df7da073f9..34450b10033 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -2,7 +2,7 @@ This wiki explains how to create and use webhooks in BDFD. ```admonish warning -In this wiki we use functions that only work on [BDScript 2](../introduction/variables.md). We recommend you to use the same script language to avoid problems with examples. +In this wiki we use functions that only work on [BDScript 2](./bds2/AboutBDS2/variables.md). We recommend you to use the same script language to avoid problems with examples. ``` ## Content From 9a8bd4f3343884f2d00909863ddf05516b30f4c4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 22:40:37 +0300 Subject: [PATCH 0898/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 34450b10033..4572e6273df 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -2,7 +2,7 @@ This wiki explains how to create and use webhooks in BDFD. ```admonish warning -In this wiki we use functions that only work on [BDScript 2](./bds2/AboutBDS2/variables.md). We recommend you to use the same script language to avoid problems with examples. +In this wiki we use functions that only work on [BDScript 2](./bds2/aboutBDScript2.md). We recommend you to use the same script language to avoid problems with examples. ``` ## Content From 68eed9cf70e5e927b89154ba5f9462ca6098d0e9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 22:45:50 +0300 Subject: [PATCH 0899/1179] Update webhooks.md --- src/guides/general/webhooks.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 4572e6273df..917efe6f768 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -2,14 +2,23 @@ This wiki explains how to create and use webhooks in BDFD. ```admonish warning -In this wiki we use functions that only work on [BDScript 2](./bds2/aboutBDScript2.md). We recommend you to use the same script language to avoid problems with examples. +In this wiki we use functions that only work on [**BDScript 2**](./bds2/aboutBDScript2.md). We recommend you to use the same script language to avoid problems with examples. ``` ## Content -[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) > [**$webhookSend[]**](#webhooksend) > [**$webhookDelete[]**](#webhookDelete) > [**$webhookAvatarURL[]**](#webhookavatarurl) > [**$webhookUsername[]**](#webhookusername) > [**$webhookTitle[]**](#webhooktitle) > [**$webhookDescription[]**](#webhookdescription) > [**$webhookFooter[]**](#webhookfooter) > [**$webhookContent[]**](#webhookcontent) > [**$webhookColor[]**](#webhookcolor) > [Beautiful Webhook](#beautiful-webhook) +[**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) > [**$webhookSend[]**](#webhooksend) > [**$webhookDelete[]**](#webhookDelete) > [**$webhookAvatarURL[]**](#webhookavatarurl) > [**$webhookUsername[]**](#webhookusername) > [**$webhookTitle[]**](#webhooktitle) > [**$webhookDescription[]**](#webhookdescription) > [**$webhookFooter[]**](#webhookfooter) > [**$webhookContent[]**](#webhookcontent) > [**$webhookColor[]**](#webhookcolor) > [**Beautiful Webhook**](#beautiful-webhook) ## Functions Used - [`$webhookCreate[]`](../../bdscript/webhookCreate.md) +- [`$webhookSend[]`](../../bdscript/webhookSend.md) +- [`$webhookDelete[]`](../../bdscript/webhookDelete.md) +- [`$webhookAvatarURL[]`](../../bdscript/webhookAvatarURL.md) +- [`$webhookUsername[]`](../../bdscript/webhookUsername.md) +- [`$webhookTitle[]`](../../bdscript/webhookTitle.md) +- [`$webhookDescription[]`](../../bdscript/webhookDescription.md) +- [`$webhookFooter[]`](../../bdscript/webhookFooter.md) +- [`$webhookContent[]`](../../bdscript/webhookContent.md) +- [`$webhookColor[]`](../../bdscript/webhookColor.md) ## Support Functions Used - [`$var[]`](../../bdscript/var.md) From 59d30e53d7f6d6a6b06f8e7c46489d3b05d38d4d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:13:30 +0300 Subject: [PATCH 0900/1179] Update webhooks.md --- src/guides/general/webhooks.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 917efe6f768..43918da00c5 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -97,7 +97,7 @@ You can use our ["Color" tool](../../tools/color.md) to select the best color! ``` $nomention $var[webhook;$webhookCreate[$channelID;Test webhook]] -$webhookSend[$var[webhook];I'm the best webhook;Title;;It's description!;#000;;;;;;false] +$webhookSend[$var[webhook];I'm the best webhook;Title;;It's description!;#673ab7;;;;;;false] ``` ```admonish question title="What is this?" @@ -286,11 +286,12 @@ You can use our ["Color" tool](../../tools/color.md) to select the best color! ``` $nomention $var[webhook;$webhookCreate[$channelID;Test webhook]] -$webhookColor[$var[webhook];#000] +$webhookColor[$var[webhook];#673ab7] +$webhookDescriprion[⬅️ Embed border color] ``` ```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +How [`$webhookCreate[]`](#webhookcreate), [`$webhookDescriprion[]`](#webhookdescriprion), [`$channelID`](../../bdscript/channelID.md), [`$var[]`](../../bdscript/var.md) works? ``` # Beautiful webhook @@ -298,5 +299,10 @@ Here is one example of how to use a webhook. ``` $nomention -$var[webhook;$webhookCreate[$channelID;I'm webhook 😎]] +$var[webhook;$webhookCreate[$channelID;I'm webhook 😎;$serverIcon]] +$webhookContent[👇 Read before chatting] +$webhookTitle[📚 Rules] +$webhookDescription[1. Be patient +2. Just chill] +$webhookFooter[Made by BDFD] ``` \ No newline at end of file From b80b15e13f69d8342b30445682a94b9649c7d2b6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:18:09 +0300 Subject: [PATCH 0901/1179] Update webhooks.md --- src/guides/general/webhooks.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 43918da00c5..de6101f1de0 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -300,9 +300,9 @@ Here is one example of how to use a webhook. ``` $nomention $var[webhook;$webhookCreate[$channelID;I'm webhook 😎;$serverIcon]] -$webhookContent[👇 Read before chatting] -$webhookTitle[📚 Rules] -$webhookDescription[1. Be patient +$webhookContent[$var[webhook];👇 Read before chatting] +$webhookTitle[$var[webhook];📚 Rules] +$webhookDescription[$var[webhook];1. Be patient 2. Just chill] -$webhookFooter[Made by BDFD] +$webhookFooter[$var[webhook];Made by BDFD] ``` \ No newline at end of file From 851d3594b6cfa1ddfcef5cd7acab03608d071eec Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:21:48 +0300 Subject: [PATCH 0902/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 64088c3b209..b8ef2f2fc0b 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -197,7 +197,7 @@ $description[⬅️ Border color hex] $color[#673ab7] ``` -``` discord yaml +```discord yaml - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" From fa62187abddda8bb270d375f03f5d6bed5c854a8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:22:52 +0300 Subject: [PATCH 0903/1179] Update webhooks.md --- src/guides/general/webhooks.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index de6101f1de0..c02b4316e73 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -287,9 +287,26 @@ You can use our ["Color" tool](../../tools/color.md) to select the best color! $nomention $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookColor[$var[webhook];#673ab7] -$webhookDescriprion[⬅️ Embed border color] +$webhookDescriprion[⬅️ Embed border color.] ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: Test webhook + color: "#fff" + bot: true + verified: true + content: + embed: + description: ⬅️ Embed border color. + color: "#673ab7" +``` + ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$webhookDescriprion[]`](#webhookdescriprion), [`$channelID`](../../bdscript/channelID.md), [`$var[]`](../../bdscript/var.md) works? ``` From 61bce8131e1ea3aae85c864aeea39befc7115129 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:23:43 +0300 Subject: [PATCH 0904/1179] Update color.md --- src/bdscript/color.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/bdscript/color.md b/src/bdscript/color.md index c53926881df..eb6fee8cc59 100644 --- a/src/bdscript/color.md +++ b/src/bdscript/color.md @@ -20,17 +20,17 @@ $nomention $description[⬅️ That is the embed color border!] $color[#673ab7] ``` - -``` discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - !example -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true verified: true content: embed: From 8a6038eff2313bd95121449b781971cb540f1481 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:30:15 +0300 Subject: [PATCH 0905/1179] Update webhooks.md --- src/guides/general/webhooks.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index c02b4316e73..91654a760a6 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -217,6 +217,22 @@ $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookDescription[$var[webhook];This is a detailed description for my webhook.] ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 674344467746258975 + username: Test webhook + color: "#fff" + bot: true + verified: false + content: + embed: + description: This is a detailed description for my webhook. +``` + ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? ``` @@ -261,7 +277,7 @@ $webhookContent[Webhook URL;Text] $nomention $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookContent[$var[webhook];Hello from my webhook!] -``` +``` ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? @@ -296,11 +312,11 @@ $webhookDescriprion[⬅️ Embed border color.] color: "#E67E22" content: | !example -- user_id: 1009018156494368798 +- user_id: 674344467746258975 username: Test webhook color: "#fff" bot: true - verified: true + verified: false content: embed: description: ⬅️ Embed border color. From 8b418911c650c1c71b2ba54e9b11e9a9dfe8c5d7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:32:00 +0300 Subject: [PATCH 0906/1179] Update webhooks.md --- src/guides/general/webhooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 91654a760a6..ee887e82910 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -223,7 +223,7 @@ $webhookDescription[$var[webhook];This is a detailed description for my webhook. color: "#E67E22" content: | !example -- user_id: 674344467746258975 +- user_id: 887433921657176065 username: Test webhook color: "#fff" bot: true From c3a843ccbce25025725f586ddf6642fb04d006e5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:32:22 +0300 Subject: [PATCH 0907/1179] Update description.md --- src/bdscript/description.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/description.md b/src/bdscript/description.md index 41181ee8927..f69df58d2f9 100644 --- a/src/bdscript/description.md +++ b/src/bdscript/description.md @@ -16,7 +16,7 @@ $nomention $description[This is a description!] ``` -``` discord yaml +```discord yaml - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" From 4f3c92b732949d6a035bc59423e7a808ae69fbe2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:33:07 +0300 Subject: [PATCH 0908/1179] Update title.md --- src/bdscript/title.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/title.md b/src/bdscript/title.md index 27703782bd4..291842989bf 100644 --- a/src/bdscript/title.md +++ b/src/bdscript/title.md @@ -23,7 +23,7 @@ $title[This is a title!] $description[⬆️ That is a nice title.] ``` -``` discord yaml +```discord yaml - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" From 72467950cb50995b6404bde8940e2d2382f8d8c0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:34:22 +0300 Subject: [PATCH 0909/1179] Update webhooks.md --- src/guides/general/webhooks.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index ee887e82910..769ea41d864 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -194,6 +194,22 @@ $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookTitle[$var[webhook];My Webhook Title] ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 674344467746258975 + username: Test webhook + color: "#fff" + bot: true + verified: false + content: | + embed: + title: My Webhook Title +``` + ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? ``` From 6989b712b282edde1d426449a8303ef4c9d69c46 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:34:50 +0300 Subject: [PATCH 0910/1179] Update footer.md --- src/bdscript/footer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/footer.md b/src/bdscript/footer.md index adddfd30012..e8a84217792 100644 --- a/src/bdscript/footer.md +++ b/src/bdscript/footer.md @@ -16,7 +16,7 @@ $nomention $footer[Hello! I'm footer👋] ``` -``` discord yaml +```discord yaml - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" From 9a175b0186b06592970d163ef53f3ab184f78ad0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:36:36 +0300 Subject: [PATCH 0911/1179] Update webhooks.md --- src/guides/general/webhooks.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 769ea41d864..0ec8a3d9a0d 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -272,6 +272,22 @@ $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookFooter[$var[webhook];Footer Text Here] ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 887433921657176065 + username: Test webhook + color: "#fff" + bot: true + verified: false + embed: + footer: + text: Footer Text Here +``` + ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? ``` From c36e32abd2ba901c9a5f60523ac2b404d03c281d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sat, 17 Jan 2026 23:45:12 +0300 Subject: [PATCH 0912/1179] Update timeFormat.md --- src/resources/timeFormat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/resources/timeFormat.md b/src/resources/timeFormat.md index be2e94f9fef..a5af41e10eb 100644 --- a/src/resources/timeFormat.md +++ b/src/resources/timeFormat.md @@ -1,5 +1,5 @@ # Time Format -Custom time formatting values for [`$creationDate`](../bdscript/creationDate.md), [`$userJoinedDiscord`](../bdscript/userJoinedDiscord.md), and [`$userJoined`](../bdscript/userJoined.md) functions. +Custom time formatting values for [`$creationDate[]`](../bdscript/creationDate.md), [`$userJoinedDiscord[]`](../bdscript/userJoinedDiscord.md) and [`$userJoined[]`](../bdscript/userJoined.md) functions. ### Time Formats List of supported time format values : From ca778349ff2e124c95296431269c548c51577804 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 00:38:56 +0300 Subject: [PATCH 0913/1179] Update webhooks.md --- src/guides/general/webhooks.md | 79 +++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 2 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 0ec8a3d9a0d..17026aa7a5d 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -62,6 +62,21 @@ $var[Webhook;$webhookCreate[$channelID;Secret]] Created and saved! ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Created ans saved! +``` + > How [`$var[]`](../../bdscript/var.md) and [`$channelID`](../../bdscript/channelID.md) works? ~~~ @@ -123,6 +138,21 @@ $webhookDelete[$var[webhook]] Deleted! ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Deleted! +``` + ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? ``` @@ -144,9 +174,24 @@ $webhookAvatarURL[Webhook URL;New avatar URL] $nomention $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookAvatarURL[$var[webhook];$authorAvatar] -New avatar! +New avatar for webhook! ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + New avatar for webhook! +``` + ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md), [`$var[]`](../../bdscript/var.md) and [`$authorAvatar`](../../bdscript/authorAvatar.md) works? ``` @@ -168,9 +213,24 @@ $webhookUsername[Webhook URL;New username] $nomention $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookUsername[$var[webhook];BDFD Support] -New username! +New username for webhook! ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + New username for webhook! +``` + ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? ``` @@ -311,6 +371,21 @@ $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookContent[$var[webhook];Hello from my webhook!] ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 674344467746258975 + username: Test webhook + color: "#fff" + bot: true + verified: true + content: | + Hello from my webhook! +``` + ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? ``` From 14cfd156f05edc3429debdf1bc0e54f149d2581f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 00:42:14 +0300 Subject: [PATCH 0914/1179] Update webhooks.md --- src/guides/general/webhooks.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 17026aa7a5d..1b6dcff47af 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -50,6 +50,21 @@ $nomention $webhookCreate[$channelID;BDFD Webhook 🤖] ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + 1234abcd567ABCDEFG890H_654679203GDGJEMFNXH.6479304948 +``` + ```admonish question title="What is this?" How [`$channelID`](../../bdscript/channelID.md) works? ``` From c596e83ab0d96e4c9ab1fff3ae9bf2621d5ebbb9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 00:49:21 +0300 Subject: [PATCH 0915/1179] Update timestamp.md --- src/tools/timestamp.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 9fb94c74382..574ba670748 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -210,7 +210,8 @@ Unix date: color: "#E67E22" content: | !example -- username: BDFD Support +- user_id: 1009018156494368798 + username: BDFD Support color: "#378afa" bot: true verified: true From d9734894666d53a89d07e1dd6c0d5e9f2158da5f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 00:50:02 +0300 Subject: [PATCH 0916/1179] Update hostingExpireTimeComplex.md --- src/bdscript/hostingExpireTimeComplex.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bdscript/hostingExpireTimeComplex.md b/src/bdscript/hostingExpireTimeComplex.md index 26e083cb427..5133527c7a6 100644 --- a/src/bdscript/hostingExpireTimeComplex.md +++ b/src/bdscript/hostingExpireTimeComplex.md @@ -25,7 +25,8 @@ I will be offline color: "#E67E22" content: | !example -- username: BDFD Support +- user_id: 1009018156494368798 + username: BDFD Support color: "#378afa" bot: true verified: true From 3afe884ec2c2990159fea8f30d07b1dc1b778c23 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 00:57:08 +0300 Subject: [PATCH 0917/1179] Update webhooks.md --- src/guides/general/webhooks.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 1b6dcff47af..38a9821c1cb 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -127,9 +127,29 @@ You can use our ["Color" tool](../../tools/color.md) to select the best color! ``` $nomention $var[webhook;$webhookCreate[$channelID;Test webhook]] -$webhookSend[$var[webhook];I'm the best webhook;Title;;It's description!;#673ab7;;;;;;false] +$webhookSend[$var[webhook];I'm the best webhook;Title;;It's a description!;#673ab7;;;;;;false] ``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- username: Test webhook + color: "#fff" + bot: true + verified: true + content: | + I'm the best webhook + embed: + title: Title + description: It's a description! + color: "#673ab7" + footer: + text: Footer Text Here +``` + ```admonish question title="What is this?" How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? ``` From 00bc711a8cc90c90a511b6be22dc189ed507c851 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 09:05:11 +0300 Subject: [PATCH 0918/1179] Update 404.md --- src/404.md | 107 +++++++++++++++++++++++++---------------------------- 1 file changed, 51 insertions(+), 56 deletions(-) diff --git a/src/404.md b/src/404.md index 0c872930b45..72181f7db6c 100644 --- a/src/404.md +++ b/src/404.md @@ -1,56 +1,51 @@ - - -
- 404 -

Page not found:(

-
- - -
-
+ + +
+ 404 +

Page not found

+ + Back to Home + +
From 84d46af700f4cd66bfe9956bf6f4a655f03d3ca8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 09:13:22 +0300 Subject: [PATCH 0919/1179] Update foreword.md --- src/foreword.md | 391 ++++++++++++++++++++++++------------------------ 1 file changed, 193 insertions(+), 198 deletions(-) diff --git a/src/foreword.md b/src/foreword.md index 3fb781ffac5..9404130d352 100644 --- a/src/foreword.md +++ b/src/foreword.md @@ -1,198 +1,193 @@ - - -
-

Bot Designer For Discord

-

BDFD makes building Discord bots easy, from simple to advanced.

- -
- -
-

Why BDFD?

-
-
- -

Free hosting

-

By simply watching ads. No need for complicated setup or expensive hosting plans.

-
-
- -

Anywhere

-

Use our app on your phone, tablet, or computer - your bot is always accessible.

-
-
- -

Functions

-

From basic "ping! pong!" commands to advanced AI features, BDFD provides everything you need to create unique and engaging bots.

-
-
- -

Support

-

Join our friendly Discord server, where we’re always happy to help you out with any questions related to BDFD.

-
-
-
- - - -
-

Download

-
- - - or use - -
-
- -
-

Preview

-

Let’s see what we can do with BDFD! It’s time to dive deep into the world of this powerful tool and unlock its full potential!

-
- -```discord yaml -- user_id: 390515191819010058 - username: kubastick - color: "#FF0000" - content: | - Hello guys! -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - <@kubastick> Level up! Now your current level is 5 -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - command: - user_id: 803569638084313098 - color: "#E67E22" - author: RainbowKey - command: /work - content: | - You worked successfully and earned... - components: - - - - type: secondary - label: 🪙 50 Coins! -- user_id: 311808747141857292 - username: Lelouch Lamperouge - color: "#39B0E8" - content: | - !bal <@RainbowKey> -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - embed: - title: Balance - RainbowKey - description: 🪙 2146 Coins! -- user_id: 154148273307910144 - username: MineBartekSa - color: "#FF0000" - content: | - !ban <@Berk> Breaking BDFD ToS -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - reply: - user_id: 154148273307910144 - author: MineBartekSa - color: "#FF0000" - content: | - !ban <@Berk> Breaking BDFD ToS - content: | - <@Berk> was banned with "Breaking BDFD ToS" reason. - Banned by <@MineBartekSA> - reactions: - - emoji: https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Twemoji12_2705.svg/640px-Twemoji12_2705.svg.png - name: ":white_check_mark:" - count: 1 -- content: | - Berk left without pizza. - type: leave -- user_id: 311808747141857292 - username: Lelouch Lamperouge - color: "#39B0E8" - content: | - !prefix - -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - Sure! New prefix selected: - -- user_id: 325663449680052227 - username: Emperor Toaster - color: "#B4B4B4" - content: | - -askAi Hello! Who are you? -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - I'm an AI designed to assist with a variety of questions and tasks. How can I help you today? -- user_id: 325663449680052227 - username: Emperor Toaster - color: "#B4B4B4" - content: | - What day is today? -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - Today is a wonderful day filled with opportunities and potential! -``` + + +
+

Bot Designer For Discord

+

Build powerful Discord bots without coding experience.

+ +
+ +
+

Why BDFD?

+
+
+
+ + Free Hosting +
+

Host your bot for free. No complicated setup or expensive hosting plans required.

+
+
+
+ + Build Anywhere +
+

Create and manage your bot from any device. Works on phones, tablets, and computers.

+
+
+
+ + Powerful Functions +
+

Access 400+ built-in functions for moderation, economy systems, AI integration, and more.

+
+
+
+ + Active Community +
+

Get help from our friendly Discord community with over 60,000 members.

+
+
+
+ +
+

Resources

+ +
+ +
+

Get Started

+
+ + + +
+
+ +
+

See It In Action

+

Here's what bots built with BDFD can do:

+
+ +```discord yaml +- user_id: 390515191819010058 + username: kubastick + color: "#FF0000" + content: | + Hello guys! +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + <@kubastick> Level up! Now your current level is 5 +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + command: + user_id: 803569638084313098 + color: "#E67E22" + author: RainbowKey + command: /work + content: | + You worked successfully and earned... + components: + - + - type: secondary + label: 🪙 50 Coins! +- user_id: 311808747141857292 + username: Lelouch Lamperouge + color: "#39B0E8" + content: | + !bal <@RainbowKey> +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + embed: + title: Balance - RainbowKey + description: 🪙 2146 Coins! +- user_id: 154148273307910144 + username: MineBartekSa + color: "#FF0000" + content: | + !ban <@Berk> Breaking BDFD ToS +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + reply: + user_id: 154148273307910144 + author: MineBartekSa + color: "#FF0000" + content: | + !ban <@Berk> Breaking BDFD ToS + content: | + <@Berk> was banned with "Breaking BDFD ToS" reason. + Banned by <@MineBartekSA> + reactions: + - emoji: https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Twemoji12_2705.svg/640px-Twemoji12_2705.svg.png + name: ":white_check_mark:" + count: 1 +- content: | + Berk left without pizza. + type: leave +- user_id: 311808747141857292 + username: Lelouch Lamperouge + color: "#39B0E8" + content: | + !prefix - +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Sure! New prefix selected: - +- user_id: 325663449680052227 + username: Emperor Toaster + color: "#B4B4B4" + content: | + -askAi Hello! Who are you? +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + I'm an AI designed to assist with a variety of questions and tasks. How can I help you today? +- user_id: 325663449680052227 + username: Emperor Toaster + color: "#B4B4B4" + content: | + What day is today? +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Today is a wonderful day filled with opportunities and potential! +``` \ No newline at end of file From cc9493a4b087985a5169e40275430eae9cfde7c9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 09:14:16 +0300 Subject: [PATCH 0920/1179] Update settings.md --- src/settings.md | 45 --------------------------------------------- 1 file changed, 45 deletions(-) diff --git a/src/settings.md b/src/settings.md index 7ff5bcfe93a..52f292207e5 100644 --- a/src/settings.md +++ b/src/settings.md @@ -13,51 +13,6 @@ Let's customize your experience in our Bot Designer For Discord wiki world! -
-

Wiki Theme

-

You can choose a color scheme that best suits your preferences and requirements.

- - -
-
-
-
Locked
-
-
- - - - - - - - - -
-

270°

-
- -
-

Text Highlighting

-

Improve readability and make your text stand out with text highlighting.

-
- - - - - - - - - - - -
-

"Disable" (Disabled)

-
-

Text Size

Easily modify the size of text for optimal viewing and readability.

From cc275ea4dc64ce0fb2107ae15ef391f7e0db11d0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 14:47:02 +0300 Subject: [PATCH 0921/1179] Update 404.md --- src/404.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/404.md b/src/404.md index 34cddf8b931..8eea83a3f54 100644 --- a/src/404.md +++ b/src/404.md @@ -49,3 +49,4 @@ Back to Home
+ From bc2de5f684fa4b05ae8743d75d9e27dabca159c6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:10:33 +0300 Subject: [PATCH 0922/1179] Update color.md --- src/tools/color.md | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index b8ef2f2fc0b..1bb0839c20a 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -5,19 +5,14 @@ visibility: hidden; } .picker-container { - position: relative; - background-color: var(--color3); - border-radius: 10px; - margin-top: -5rem; - padding-left: 15px; - padding-right: 15px; - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); - transition: 0.3s; -} -.picker-container:hover { - transform: scale(1.015); - border-radius: 12.5px; - transition: 0.3s; + background: var(--card-bg); + border-radius: var(--border-radius); + border: 1px solid rgba(255, 255, 255, 0.05); + margin-top: 1.5rem; + padding-bottom: 1.5rem; + padding-left: 15px; + padding-right: 15px; + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); } .picker-container h2 { margin-top: 60px; From df03fb5f75e25165da1ad8649bf0bf2e7b4e623f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:15:50 +0300 Subject: [PATCH 0923/1179] Update color.md --- src/tools/color.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 1bb0839c20a..7768d4e9cec 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -9,17 +9,17 @@ border-radius: var(--border-radius); border: 1px solid rgba(255, 255, 255, 0.05); margin-top: 1.5rem; - padding-bottom: 1.5rem; - padding-left: 15px; - padding-right: 15px; + padding-bottom: 0rem; + padding-left: 1.5rem; + padding-right: 1.5rem; box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); } .picker-container h2 { - margin-top: 60px; - padding-top: 15px; + margin-top: -.5rem; + padding-top: 1.5rem; } .picker-container p { - margin-top: -15px; + margin-top: 1.5rem; } .input-row { display: flex; From 98125425bc7b4a5605f6fe2ae7c6239b0cf9ee51 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:16:52 +0300 Subject: [PATCH 0924/1179] Update color.md --- src/tools/color.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 7768d4e9cec..7037439dff2 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -104,13 +104,6 @@ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); transition: 0.2s; } - -#randomColorButton:hover { - transform: scale(1.05); - border-radius: 8px; - border-width: 1px; - transition: 0.2s; -} .error { color: #dc3545; font-size: 12px; From 3de5eb20aa6cecf2a13b694793bf5b799d81ddab Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:23:47 +0300 Subject: [PATCH 0925/1179] Update color.md --- src/tools/color.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 7037439dff2..de89b347eaa 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -19,22 +19,20 @@ padding-top: 1.5rem; } .picker-container p { - margin-top: 1.5rem; + margin-top: .75rem; } .input-row { - display: flex; - gap: 10px; - align-items: center; - margin-bottom: 2.5px; + display: flex; + gap: 1rem; + align-items: center; } .hex-input { flex: 1; color: #fff; padding: 10px; background: hsl(0deg 0% 100% / 7%); - border-radius: 10px; + border-radius: var(--border-radius); border-width: 0; - border-radius: 10px; font-family: monospace; font-size: 14px; height: 3rem; @@ -49,7 +47,7 @@ font-size: 1.5rem; display: block; outline: none; - border-radius: 10px; + border-radius: var(--border-radius); border-width: 0; height: 5.5rem; padding: 0; @@ -59,7 +57,7 @@ user-select: none; } .color-input::-webkit-color-swatch { - border-radius: 10px; + border-radius: var(--border-radius); border-width: 0; } .random-result { @@ -70,7 +68,7 @@ #randomColorResult { padding: .9rem; width: 100%; - border-radius: 10px; + border-radius: var(--border-radius); margin-top: -2.5rem !important; margin-bottom: 0 !important; color: #fff; @@ -92,7 +90,7 @@ padding-right: 1rem; height: 4rem; border: none; - border-radius: 10px; + border-radius: var(--border-radius); cursor: pointer; margin-bottom: 1.5rem !important; margin-top: -1rem !important; @@ -114,7 +112,7 @@ .valid-color { color: white; padding: 4px 8px; - border-radius: 10px; + border-radius: var(--border-radius); font-weight: bold; width: fit-content; margin-left: -1.6rem; From 2f482333d6106aadeeb58152068052e0e53fad00 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:28:37 +0300 Subject: [PATCH 0926/1179] Update color.md --- src/tools/color.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index de89b347eaa..5bcb24093a2 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -27,14 +27,16 @@ align-items: center; } .hex-input { - flex: 1; + flex: 1 !important; color: #fff; - padding: 10px; + padding-top: 2.25rem; + padding-bottom: 2.25rem; + padding-left: 1rem; background: hsl(0deg 0% 100% / 7%); border-radius: var(--border-radius); border-width: 0; font-family: monospace; - font-size: 14px; + font-size: 1.5rem; height: 3rem; width: 65%; outline: none; @@ -75,7 +77,6 @@ font-weight: bold; transition: .3s; } - #randomColorResult:hover { color: #000; opacity: 0.6; @@ -100,13 +101,11 @@ color: #fff; background: hsl(0deg 0% 100% / 7%); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); - transition: 0.2s; } .error { color: #dc3545; - font-size: 12px; - min-height: 16px; - margin-top: 2px; + font-size: 1rem; + min-height: 1rem; padding-bottom: 1rem; } .valid-color { From fe3902ee7745043437ffc77e702aa9bddb254bd0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:33:27 +0300 Subject: [PATCH 0927/1179] Update color.md --- src/tools/color.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/tools/color.md b/src/tools/color.md index 5bcb24093a2..a3100a10965 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -19,11 +19,13 @@ padding-top: 1.5rem; } .picker-container p { - margin-top: .75rem; + margin-top: -1.5rem; } .input-row { display: flex; gap: 1rem; + margin-top: -1rem; + margin-bottom: 1.5rem; align-items: center; } .hex-input { @@ -103,10 +105,11 @@ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); } .error { - color: #dc3545; - font-size: 1rem; - min-height: 1rem; - padding-bottom: 1rem; + color: #dc3545; + font-size: 1rem; + min-height: 1rem; + padding-bottom: 1rem; + margin-top: -1.5rem; } .valid-color { color: white; From 40c77cdc58e15ce8021caf073ad5a27728cd8e7e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:36:07 +0300 Subject: [PATCH 0928/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index a3100a10965..e7c96883098 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -118,7 +118,7 @@ font-weight: bold; width: fit-content; margin-left: -1.6rem; - margin-top: -2.5rem; + margin-top: -.5rem; display: flex; text-shadow: 0px 0px 5px rgb(0 0 0 / 100%); } From c99ef74192e22b2a939e47f945e476c83dd136f1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:38:33 +0300 Subject: [PATCH 0929/1179] Update timestamp.md --- src/tools/timestamp.md | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 574ba670748..f257141a64e 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -5,20 +5,14 @@ visibility: hidden; } .converter-section { - position: relative; - background-color: var(--color3); - border-radius: 10px; - margin-top: -5rem; - padding-bottom: 1.5rem; - padding-left: 15px; - padding-right: 15px; - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); - transition: 0.3s; -} -.converter-section:hover, .current-time:hover { - transform: scale(1.015); - border-radius: 12.5px; - transition: 0.3s; + background: var(--card-bg); + border-radius: var(--border-radius); + border: 1px solid rgba(255, 255, 255, 0.05); + margin-top: 1.5rem; + padding-bottom: 0rem; + padding-left: 1.5rem; + padding-right: 1.5rem; + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); } .converter-section h2 { margin-top: 60px; From 95926ab80361d2a2043415673ce1af733236d20b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:40:27 +0300 Subject: [PATCH 0930/1179] Update timestamp.md --- src/tools/timestamp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index f257141a64e..b6a515a95a4 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -15,8 +15,8 @@ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); } .converter-section h2 { - margin-top: 60px; - padding-top: 15px; + margin-top: -.5rem; + padding-top: 1.5rem; } .converter-section p { margin-top: -15px; From 035eabe72bf230e8b17bdad93255acf469d39bb6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:40:51 +0300 Subject: [PATCH 0931/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index b6a515a95a4..4c0f506b43b 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -19,7 +19,7 @@ padding-top: 1.5rem; } .converter-section p { - margin-top: -15px; + margin-top: -1.5rem; } .converter-section label { display: block; From 2b2f5fb3fe6e3373869459ba552bd898fe1ef7d1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:41:24 +0300 Subject: [PATCH 0932/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 4c0f506b43b..50cbe15002e 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -131,7 +131,7 @@ Here you can manage UnixTime for your commands. ```admonish note -Unix time is a system for tracking time by counting the number of seconds that have passed since January 1st, 1970. This value is stored as a simple integer, which computers can easily process and calculate with. For example, the function [`$getTimestamp`](../bdscript/getTimestamp.md) in BDFD can be used to get the current Unix timestamp or perform time-based operations for your bot. +Unix time is a system for tracking time by counting the number of seconds that have passed since January 1st, 1970. This value is stored as a simple integer, which computers can easily process and calculate with. For example, the function [`$getTimestamp`](../bdscript/getTimestamp.md) can be used to get the current Unix timestamp or perform time-based operations for your bot. ``` ```admonish info From 6955abe475bf65ed3863c0ed91922570ad2c740b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:45:21 +0300 Subject: [PATCH 0933/1179] Update timestamp.md --- src/tools/timestamp.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 50cbe15002e..565b1f494bf 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -22,9 +22,9 @@ margin-top: -1.5rem; } .converter-section label { - display: block; - margin-bottom: 8px; - color: #34495e; + display: block; + margin-bottom: .5rem !important; + color: #f20000; } .converter-section input { color: #fff; From 10215e8ff07a3fc0f82d939e26b3a51de02bd4e2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:46:30 +0300 Subject: [PATCH 0934/1179] Update timestamp.md --- src/tools/timestamp.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 565b1f494bf..d7ce7e934a2 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -24,7 +24,7 @@ .converter-section label { display: block; margin-bottom: .5rem !important; - color: #f20000; + color: #dc3545; } .converter-section input { color: #fff; @@ -33,9 +33,8 @@ max-width: 100%; box-sizing: border-box; background: hsl(0deg 0% 100% / 7%); - border-radius: 10px; + border-radius: var(--border-radius); border-width: 0; - border-radius: 10px; font-family: monospace; font-size: 14px; height: 3rem; @@ -52,7 +51,7 @@ margin-top: 10px; padding: 5px; background: hsl(0deg 0% 100% / 7%); - border-radius: 10px; + border-radius: var(--border-radius); font-weight: bold; word-break: break-all; display: flex; @@ -62,7 +61,7 @@ .result p { margin-top: 1.5rem !important; padding: 5px; - border-radius: 10px; + border-radius: var(--border-radius); word-break: break-all; display: flex; height: 3.5rem !important; @@ -112,7 +111,7 @@ text-align: center; padding: 10px; background-color: var(--color3); - border-radius: 10px; + border-radius: var(--border-radius); margin-top: 20px; transition: 0.3s; } From bba4f0ef8720fb6b942d3304b17f242fce45e7d3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:47:07 +0300 Subject: [PATCH 0935/1179] Update timestamp.md --- src/tools/timestamp.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index d7ce7e934a2..efb0872e4e9 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -99,13 +99,6 @@ color: #fff; background: hsl(0deg 0% 100% / 7%); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); - transition: 0.2s; -} -.converter-section button:hover { - transform: scale(1.05); - border-radius: 8px; - border-width: 1px; - transition: 0.2s; } .current-time { text-align: center; From 2ae918321b7db7c0c5941ffb92568819e69e2f36 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:03:08 +0300 Subject: [PATCH 0936/1179] Update timestamp.md --- src/tools/timestamp.md | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index efb0872e4e9..a363d84377b 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -48,11 +48,15 @@ margin-bottom: 1rem !important; } .result { - margin-top: 10px; - padding: 5px; + margin-top: 1rem; + margin-bottom: 1.5rem; + padding: 1rem; + padding-top: 2rem; + padding-bottom: 2rem; background: hsl(0deg 0% 100% / 7%); border-radius: var(--border-radius); font-weight: bold; + white-space: nowrap; word-break: break-all; display: flex; height: 3.5rem !important; @@ -60,7 +64,7 @@ } .result p { margin-top: 1.5rem !important; - padding: 5px; + padding: .5rem; border-radius: var(--border-radius); word-break: break-all; display: flex; @@ -90,7 +94,7 @@ padding-right: 1rem; height: 4rem; border: none; - border-radius: 10px; + border-radius: var(--border-radius); cursor: pointer; margin-top: 1rem !important; margin-right: 1rem !important; @@ -102,21 +106,21 @@ } .current-time { text-align: center; - padding: 10px; - background-color: var(--color3); + padding: 1.5rem; + background-color: var(--card-bg); border-radius: var(--border-radius); - margin-top: 20px; - transition: 0.3s; + margin-top: 3rem; } .timezone-error, #date-info { color: #dc3545 !important; - font-size: 12px; - min-height: 16px; + font-size: 1rem; + min-height: 1rem; margin-top: -0.75rem; margin-bottom: -0.75rem !important; } #date-info { - margin-top: .5rem !important; + margin-top: -1rem; + padding: 1rem; } From e2a4c4190d42f9ce1f08430c4bfbf5cbac023066 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:09:20 +0300 Subject: [PATCH 0937/1179] Update timestamp.md --- src/tools/timestamp.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index a363d84377b..2c1c179bcf9 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -56,7 +56,6 @@ background: hsl(0deg 0% 100% / 7%); border-radius: var(--border-radius); font-weight: bold; - white-space: nowrap; word-break: break-all; display: flex; height: 3.5rem !important; @@ -111,6 +110,9 @@ border-radius: var(--border-radius); margin-top: 3rem; } +#current-time span { + color: #a5a5a5; +} .timezone-error, #date-info { color: #dc3545 !important; font-size: 1rem; @@ -119,7 +121,8 @@ margin-bottom: -0.75rem !important; } #date-info { - margin-top: -1rem; + margin-top: -2rem !important; + margin-left: -1rem; padding: 1rem; } From c715532276b19aa928f163dfe2887ba233b44efb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:10:51 +0300 Subject: [PATCH 0938/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index 35ce89a620b..cfe2ac819dc 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -41,7 +41,7 @@ Example text! display: flex; align-items: center; padding: 1rem; - background-color: var(--color3); + background-color: var(--card-bg); border-radius: 10px; transition: all 0.2s; margin-bottom: .75rem; @@ -76,7 +76,7 @@ input[type="checkbox"] { accent-color: var(--color2); } .total-section { - background-color: var(--color3); + background-color: var(--card-bg); padding: 1rem; border-radius: 10px; margin: 3rem 0; @@ -119,7 +119,7 @@ input[type="checkbox"] { width: 100%; padding: 1.5rem; font-size: 1.5rem; - background-color: var(--color3); + background-color: var(--card-bg); border: 2px solid var(--color2); border-radius: 10px; color: #ffff; @@ -133,7 +133,7 @@ input[type="checkbox"] { color: #fff; } .results { - background-color: var(--color3); + background-color: var(--card-bg); padding: 1.5rem; border-radius: 10px; margin-top: -1rem; From 4b6a3c82098f2b867852fb23fadd18e38f321449 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:14:30 +0300 Subject: [PATCH 0939/1179] Update timestamp.md --- src/tools/timestamp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 2c1c179bcf9..5a04013df46 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -28,7 +28,7 @@ } .converter-section input { color: #fff; - padding: 2.25rem !important; + padding: 2.25rem; width: 100%; max-width: 100%; box-sizing: border-box; From 81147e9ad3c299465040915d51e733fc9ca10506 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:14:59 +0300 Subject: [PATCH 0940/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index cfe2ac819dc..dd64f5a649b 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -28,15 +28,8 @@ Example text! background: hsl(0deg 0% 100% / 7%); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); flex: 1; - transition: all 0.2s; text-align: center; } -.control-button:hover, .category-toggle:hover { - transform: scale(1.05); - border-radius: 8px; - border-width: 1px; - transition: 0.2s; -} .permission-item { display: flex; align-items: center; From 01e7aebe7a3a3b700bae6fab4808a30f3a34e34d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:21:02 +0300 Subject: [PATCH 0941/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index dd64f5a649b..88333294ae6 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -44,7 +44,8 @@ Example text! transform: translateY(-2px); } .permission-item.checked { - border-left-color: var(--color1); + border-left-color: var(--link-color); + background: rgb(102 126 234 / 20%); } .permission-item label { margin-left: 1.5rem; @@ -64,9 +65,9 @@ Example text! border-radius: 10px; } input[type="checkbox"] { - transform: scale(1.2); - cursor: pointer; - accent-color: var(--color2); + transform: scale(1.2); + cursor: pointer; + accent-color: var(--link-color); } .total-section { background-color: var(--card-bg); @@ -74,15 +75,9 @@ input[type="checkbox"] { border-radius: 10px; margin: 3rem 0; text-align: center; - transition: 0.3s; -} -.total-section:hover { - transform: scale(1.015); - border-radius: 12.5px; - transition: 0.3s; } .total-section:hover > .total-value { - color: var(--color1); + color: var(--link-color); transition: 0.3s; } .total-section h2 { From 1abec413bd2fd416001ab4fa3e42c5675a4d2dd0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:32:14 +0300 Subject: [PATCH 0942/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index 88333294ae6..c3df451d6fd 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -97,7 +97,7 @@ input[type="checkbox"] { .hex-value { font-family: 'Consolas', monospace; font-size: 1.4rem; - color: var(--color1); + color: var(--text-muted); margin-top: 1rem; } .input-section { @@ -108,14 +108,14 @@ input[type="checkbox"] { padding: 1.5rem; font-size: 1.5rem; background-color: var(--card-bg); - border: 2px solid var(--color2); + border: 2px solid var(--card-hover); border-radius: 10px; color: #ffff; box-sizing: border-box; } .input-section input:focus { outline: none; - border-color: var(--color1); + border-color: var(--link-color); } .input-section input::placeholder { color: #fff; @@ -196,7 +196,7 @@ input[type="checkbox"] { text-transform: uppercase; letter-spacing: .1rem ; padding-bottom: .5rem; - border-bottom: 1px solid var(--color2); + border-bottom: 1px solid var(--card-bg); flex-grow: 1; } .category-toggle { From 19849dd35a4a7c62e2665ea1b5fd2ada938e7331 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:32:44 +0300 Subject: [PATCH 0943/1179] Update color.md --- src/tools/color.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index e7c96883098..02ed5a26ef1 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -105,7 +105,7 @@ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); } .error { - color: #dc3545; + color: var(--error); font-size: 1rem; min-height: 1rem; padding-bottom: 1rem; From d4e21c87b6dad21a5037a2bff106174767a843b0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:33:24 +0300 Subject: [PATCH 0944/1179] Update timestamp.md --- src/tools/timestamp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index 5a04013df46..c95431f5091 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -24,7 +24,7 @@ .converter-section label { display: block; margin-bottom: .5rem !important; - color: #dc3545; + color: var(--error); } .converter-section input { color: #fff; @@ -114,7 +114,7 @@ color: #a5a5a5; } .timezone-error, #date-info { - color: #dc3545 !important; + color: var(--error) !important; font-size: 1rem; min-height: 1rem; margin-top: -0.75rem; From 5a2c18478a4e7066b21076699b14e14e60e6b18a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:35:53 +0300 Subject: [PATCH 0945/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 41 ++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index c3df451d6fd..7b4905f84ad 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -1,3 +1,23 @@ + + + + + + + + + + + + + + + + + + + + # Permission Calculator Example text! @@ -20,7 +40,7 @@ Example text! padding-right: 1rem; height: 4rem; border: none; - border-radius: 10px; + border-radius: var(--border-radius); cursor: pointer; font-size: 2.25rem; margin: 0.25%; @@ -35,7 +55,7 @@ Example text! align-items: center; padding: 1rem; background-color: var(--card-bg); - border-radius: 10px; + border-radius: var(--border-radius); transition: all 0.2s; margin-bottom: .75rem; border-left: 4px solid transparent; @@ -62,7 +82,7 @@ Example text! margin-left: 1rem; background-color: rgb(145 145 145 / 10%); padding: .5rem 1rem; - border-radius: 10px; + border-radius: var(--border-radius); } input[type="checkbox"] { transform: scale(1.2); @@ -70,9 +90,10 @@ input[type="checkbox"] { accent-color: var(--link-color); } .total-section { + border-radius: var(--border-radius); + border: 1px solid rgba(255, 255, 255, 0.05); background-color: var(--card-bg); padding: 1rem; - border-radius: 10px; margin: 3rem 0; text-align: center; } @@ -109,7 +130,7 @@ input[type="checkbox"] { font-size: 1.5rem; background-color: var(--card-bg); border: 2px solid var(--card-hover); - border-radius: 10px; + border-radius: var(--border-radius); color: #ffff; box-sizing: border-box; } @@ -123,7 +144,7 @@ input[type="checkbox"] { .results { background-color: var(--card-bg); padding: 1.5rem; - border-radius: 10px; + border-radius: var(--border-radius); margin-top: -1rem; } .results h3 { @@ -141,7 +162,7 @@ input[type="checkbox"] { background-color: rgb(145 145 145 / 25%); padding: 1rem; margin: 1rem 0; - border-radius: 10px; + border-radius: var(--border-radius); border-left: 0; } .combination-title { @@ -157,7 +178,7 @@ input[type="checkbox"] { padding: .75rem 1rem; margin: .5rem 0; background-color: rgb(0 0 0 / 10%); - border-radius: 10px; + border-radius: var(--border-radius); font-size: 1.5rem; } .combination-total { @@ -183,7 +204,7 @@ input[type="checkbox"] { font-size: 1.4rem; margin-top: 1rem; padding: 1rem; - border-radius: 10px; + border-radius: var(--border-radius); } .category-header { display: flex; @@ -206,7 +227,7 @@ input[type="checkbox"] { user-select: none; padding: 1rem; border: none; - border-radius: 10px; + border-radius: var(--border-radius); cursor: pointer; font-size: 1.1rem; margin-left: .5rem; From e990269f04a5cb27c4244283c3a2cca1945e3383 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:38:00 +0300 Subject: [PATCH 0946/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index a0235b69ab1..ad3b768edee 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -1,23 +1,10 @@ # Changelog -# 2026 - -## January -Added multiple Components V2 functions: -- Added `$addTextDisplay[]` -- Added `$addSeparator[]` -- Added `$addContainer[]` -- Added `$addSection[]` -- Added `$addThumbnail[]` -- Added `$addMediaGallery[]` -- Added `$addMediaGallery[]` -- Added `$addMediaGalleryItem[]` -- Added `$addActionRow[]` @@ -823,3 +810,4 @@ If you want to see the BDScript changelog, [click here](./FLOWCHART_CHANGELOG.md If you want to access this changelog externally, we have a [JSON version](https://raw.githubusercontent.com/NilPointer-Software/bdfd-wiki/dev/external/CHANGELOG.json) of the changelog to which you can send a GET request and work with a JSON document further. ``` + From 090886be172b765333c4d589d843d6404806f6e2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:51:19 +0300 Subject: [PATCH 0947/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 39 +++++++----------------------- 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index 7b4905f84ad..63b88e0cdb2 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -1,23 +1,3 @@ - - - - - - - - - - - - - - - - - - - - # Permission Calculator Example text! @@ -142,10 +122,11 @@ input[type="checkbox"] { color: #fff; } .results { - background-color: var(--card-bg); - padding: 1.5rem; - border-radius: var(--border-radius); - margin-top: -1rem; + border: 1px solid rgba(255, 255, 255, 0.05); + background-color: var(--card-bg); + padding: 1.5rem; + border-radius: var(--border-radius); + margin-top: -1rem; } .results h3 { margin-top: 0; @@ -159,7 +140,7 @@ input[type="checkbox"] { padding: 0rem 0; } .combination, .current-selection { - background-color: rgb(145 145 145 / 25%); + background-color: rgb(10 10 10 / 15%); padding: 1rem; margin: 1rem 0; border-radius: var(--border-radius); @@ -176,9 +157,7 @@ input[type="checkbox"] { } .permission-list li { padding: .75rem 1rem; - margin: .5rem 0; - background-color: rgb(0 0 0 / 10%); - border-radius: var(--border-radius); + margin: -1rem 0; font-size: 1.5rem; } .combination-total { @@ -194,13 +173,13 @@ input[type="checkbox"] { padding: 1rem; } .search-info { - color: var(--color1); + color: var(--text-secondary); font-size: 1.6rem; margin-top: -1.5rem; padding-top: 0; } .warning { - color: var(--color1); + color: var(--error); font-size: 1.4rem; margin-top: 1rem; padding: 1rem; From f9d6f700adb3d4ef958668a2ed7d28c8d52c2624 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 16:55:33 +0300 Subject: [PATCH 0948/1179] Update discord-messages.css --- src/theme/css/wiki-themes/discord-messages.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/css/wiki-themes/discord-messages.css b/src/theme/css/wiki-themes/discord-messages.css index 39a32738e5e..b9b486b455c 100644 --- a/src/theme/css/wiki-themes/discord-messages.css +++ b/src/theme/css/wiki-themes/discord-messages.css @@ -50,7 +50,7 @@ text-transform: uppercase; display: flex; align-items: center; - height: 0.9375rem; + height: 2rem; padding: 0 0.275rem; margin-top: 0.075em; border-radius: 4px; @@ -269,3 +269,4 @@ .discord-message [id$="-mark"] { line-height: 19px; } + From 73f8234ea721153715914dedf31b61b1e3442705 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 17:00:21 +0300 Subject: [PATCH 0949/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index 63b88e0cdb2..ade197c4841 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -4,6 +4,9 @@ Example text! + +

Words: 0

Spaces: 0

From c68a3f91d64f3243f93594bfa06b9ac03fd19f3e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 18:05:52 +0300 Subject: [PATCH 0959/1179] Update editor.md --- src/tools/editor.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 64303be5aae..3c439d8ecdb 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -336,7 +336,7 @@ Here you can use the basic editor features to write codes more conveniently. #error-message button:hover { transition: .4s; - color: var(--color1); + color: var(--error); border-style: solid; } @@ -388,7 +388,7 @@ Here you can use the basic editor features to write codes more conveniently. -webkit-tap-highlight-color: transparent; width: 15rem; padding: 8px 5px; - background: rgb(255 255 255 / 10%); + background: var(--card-bg); color: rgb(255 255 255 / 80%); border-radius: 10px; box-sizing: border-box; @@ -404,7 +404,7 @@ Here you can use the basic editor features to write codes more conveniently. #selectors select option { outline: none; color: #d3d3d3; - background-color: var(--color3); + background-color: var(--card-bg); } #settings, #tips { From be568388282cf36070ae4a1b37bcc5e194e9b328 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 18:13:11 +0300 Subject: [PATCH 0960/1179] Update editor.md --- src/tools/editor.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 3c439d8ecdb..a7edbd94e2a 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -361,9 +361,10 @@ Here you can use the basic editor features to write codes more conveniently. } #nameScript textarea { - border-radius: 15px; - font-size: 2rem; - height: 2.75rem; + padding: 1rem; + border-radius: 10px; + font-size: 1.5rem; + height: 3.5rem; } } From 0a493ed8c4f96b92d88902a5547bfb1367147b48 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 18:24:00 +0300 Subject: [PATCH 0961/1179] Update editor.md --- src/tools/editor.md | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index a7edbd94e2a..0861454e6a1 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -87,10 +87,11 @@ Here you can use the basic editor features to write codes more conveniently. margin-bottom: -.5rem; margin-top: .5rem; font-size: 1rem; - color: var(--color2); + color: var(--text-secondary); } #searchText, #replaceText { + padding: 1rem; background: hsl(0deg 0% 100% / 7%); color: #fff; font-size: 1.5rem; @@ -119,14 +120,6 @@ Here you can use the basic editor features to write codes more conveniently. color: #fff; background: hsl(0deg 0% 100% / 7%); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); - transition: 0.2s; -} - -#text-editorui button:hover { - transform: scale(1.05); - border-radius: 8px; - border-width: 1px; - transition: 0.4s; } #error-message { @@ -255,9 +248,9 @@ Here you can use the basic editor features to write codes more conveniently. -webkit-user-select: none; outline: none; transition: .3s; - color: hsl(0deg 0% 100% / 75%); ! important; + color: hsl(0deg 0% 100% / 75%) !important; padding: 1px 7px; - border-color: hsl(0deg 0% 100% / 15%); + border-color: var(--link-color) !important; width: 25px; border-radius: 60px; cursor: pointer; @@ -265,7 +258,7 @@ Here you can use the basic editor features to write codes more conveniently. .close-btn:hover { transition: .3s; - background-color: hsl(0deg 0% 100% / 10%); + background-color: var(--card-bg); border-style: solid; border-width: 1px; } @@ -305,13 +298,13 @@ Here you can use the basic editor features to write codes more conveniently. opacity: 0.8; transition: 0.2s; } - + .scriptdiv button:nth-of-type(1) { - right: 4rem; + right: 4.4rem; } .scriptdiv button:nth-of-type(2) { - right: 0.3rem; + right: 0.8rem; } #error-message { @@ -404,7 +397,7 @@ Here you can use the basic editor features to write codes more conveniently. #selectors select option { outline: none; - color: #d3d3d3; + color: var(--text-primary); background-color: var(--card-bg); } @@ -529,8 +522,8 @@ Here you can use the basic editor features to write codes more conveniently. margin-top: -1.75rem; display: block !important; border-radius: 10px; - background: var(--card=bg) !important; - border-color: hsl(0deg 0% 100% / 10%) !important; + background: var(--card-bg); + border-color: hsl(0deg 0% 100% / 10%); } #autocomplete span { From c3effd4d0dea7183d654d47d148bbfb0f0a46d84 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 18:24:35 +0300 Subject: [PATCH 0962/1179] Update editor.md --- src/tools/editor.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index 0861454e6a1..c07ced66ad8 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -2,6 +2,9 @@ Here you can use the basic editor features to write codes more conveniently. From f22061f9201e1c3f9a9c91ae3853da23a7f99085 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 18:33:15 +0300 Subject: [PATCH 0964/1179] Update editor.md --- src/tools/editor.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 39d1ed1fdb1..44a2ab22b47 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -345,23 +345,23 @@ Here you can use the basic editor features to write codes more conveniently. -webkit-user-select: none; position: absolute; top: 50%; - right: 1.5rem; + right: 2rem; transform: translateY(-50%); color: #888; font-size: 0.8em; } +#nameScript textarea { + padding: 1rem; + border-radius: 10px; + font-size: 1.5rem; + height: 3.5rem; +} + @media (max-width: 950px) { #nameScript span { top: -35%; } - - #nameScript textarea { - padding: 1rem; - border-radius: 10px; - font-size: 1.5rem; - height: 3.5rem; - } } #selectors { From 7bf734503eeee1742dcafe61b274a027378b4157 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 18:37:30 +0300 Subject: [PATCH 0965/1179] Update editor.md --- src/tools/editor.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 44a2ab22b47..41be552dfa0 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -532,8 +532,10 @@ Here you can use the basic editor features to write codes more conveniently. #autocomplete span { display: block; color: var(--text-secondary); - border-radius: 10px; + margin-top: .5rem; margin-bottom: .5rem; + margin-left: .5rem; + margin-right: 1rem; cursor: pointer; padding: .5rem; width: 100%; @@ -541,7 +543,6 @@ Here you can use the basic editor features to write codes more conveniently. } #autocomplete span.selected, #autocomplete span:hover { - margin-left: .5rem; border-left-color: var(--link-color); border-left-width: 2.5px; border-top-left-radius: 0; From 3747306f56c867db73351724f10be5415bae97fc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 19:12:37 +0300 Subject: [PATCH 0966/1179] Update autocomplete.js --- src/theme/autocomplete.js | 50 +++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index d08dbc62cae..b0cb76d1661 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -75,7 +75,12 @@ function autocomplete() { displayedFunctions.forEach((func, index) => { const span = document.createElement('span'); span.textContent = func; - span.addEventListener('click', () => selectFunction(func,dollarIndex,cursorPosition,inputText)); + span.addEventListener('click', () => { + const inputText = textarea.value; + const cursorPosition = textarea.selectionStart; + let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); + selectFunction(func, dollarIndex, cursorPosition, inputText); + }); autocompleteOutput.appendChild(span); }); @@ -83,11 +88,42 @@ function autocomplete() { cursorInactiveTimeout = setTimeout(hideAutocomplete, 10000); } - function selectFunction(func,dollarIndex,cursorPosition,inputText) { - textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); - textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - hideAutocomplete(); - textarea.focus(); + // Function to insert a selected function with API data + function selectFunction(func, dollarIndex, cursorPosition, inputText) { + // Get function name without brackets and arguments + const functionName = func.split('[')[0]; + + // Send request to API + fetch(`https://botdesignerdiscord.com/public/api/function/${functionName}`) + .then(response => { + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return response.json(); + }) + .then(data => { + if (data && data.tag) { + // If tag is received from API response, use it + const functionToInsert = data.tag; + textarea.value = inputText.substring(0, dollarIndex) + functionToInsert + inputText.substring(cursorPosition); + textarea.selectionStart = textarea.selectionEnd = dollarIndex + functionToInsert.length; + } else { + // If tag is not found, use original function name + console.warn('No tag found in API response for function:', functionName); + textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); + textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; + } + hideAutocomplete(); + textarea.focus(); + }) + .catch(error => { + console.error('Error fetching function info:', error); + // In case of error, use original function name + textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); + textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; + hideAutocomplete(); + textarea.focus(); + }); } function handleArrowKeys(event) { @@ -104,7 +140,7 @@ function autocomplete() { const inputText = textarea.value; const cursorPosition = textarea.selectionStart; let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); - selectFunction(selectedFunction,dollarIndex,cursorPosition,inputText); + selectFunction(selectedFunction, dollarIndex, cursorPosition, inputText); return; } highlightSelected(); From 2ed6272a71ff459ce0b429d0381775e14823e447 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 19:31:09 +0300 Subject: [PATCH 0967/1179] Update autocomplete.js --- src/theme/autocomplete.js | 265 ++++++++++++++++++++++++++++---------- 1 file changed, 196 insertions(+), 69 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index b0cb76d1661..f80b4a13f9e 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -1,5 +1,110 @@ // Setting let autocompleteEnabled = true; +let allFunctions = []; // Array to store all functions from API +let allFunctionNames = []; // Array to store simplified function names (without parameters) + +// Load functions from API on page load +async function loadFunctionsFromAPI() { + try { + const response = await fetch('https://botdesignerdiscord.com/public/api/function_list'); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + const data = await response.json(); + + // Store all functions with their full tag information + allFunctions = data; + + // Extract simplified function names for autocomplete matching + // This includes both versions with and without brackets + allFunctionNames = []; + + data.forEach(func => { + const tag = func.tag; + // Extract base function name (without parameters) + const baseName = tag.split('[')[0]; + + // Add both versions to the array for better autocomplete + if (tag.includes('[')) { + // Add version with brackets + allFunctionNames.push({ + simpleName: baseName + '[]', + fullTag: tag, + hasParams: true, + baseName: baseName + }); + + // Also add version without brackets if it doesn't exist already + if (!allFunctionNames.some(f => f.simpleName === baseName)) { + allFunctionNames.push({ + simpleName: baseName, + fullTag: baseName, + hasParams: false, + baseName: baseName + }); + } + } else { + // Function without brackets + allFunctionNames.push({ + simpleName: baseName, + fullTag: tag, + hasParams: false, + baseName: baseName + }); + } + }); + + console.log(`Loaded ${allFunctions.length} functions from API`); + return true; + } catch (error) { + console.error('Error loading functions from API:', error); + // If API fails, use fallback to DOM parsing + loadFunctionsFromDOM(); + return false; + } +} + +// Fallback function to load functions from DOM if API fails +function loadFunctionsFromDOM() { + const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')).find(li => li.querySelector('div')?.textContent.trim() === 'Functions'); + if (!functionsHeader) return; + + const sectionList = functionsHeader.nextElementSibling; + if (!sectionList) return; + + const html = sectionList.innerHTML; + const domFunctions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')).map(a => a.textContent).filter(text => text.startsWith('$')); + + allFunctionNames = []; + domFunctions.forEach(func => { + const baseName = func.split('[')[0]; + + if (func.includes('[')) { + allFunctionNames.push({ + simpleName: baseName + '[]', + fullTag: func, + hasParams: true, + baseName: baseName + }); + + if (!allFunctionNames.some(f => f.simpleName === baseName)) { + allFunctionNames.push({ + simpleName: baseName, + fullTag: baseName, + hasParams: false, + baseName: baseName + }); + } + } else { + allFunctionNames.push({ + simpleName: baseName, + fullTag: func, + hasParams: false, + baseName: baseName + }); + } + }); +} function changeAutocomplete() { autocompleteEnabled = !autocompleteEnabled; @@ -20,14 +125,8 @@ function autoSettingChange(buttonName, status) { button.style.background = status ? activeGradient : inactiveGradient; } -// Main autocomplete -function autocomplete() { - const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')).find(li => li.querySelector('div')?.textContent.trim() === 'Functions'); - if (!functionsHeader) return; - const sectionList = functionsHeader.nextElementSibling; - if (!sectionList) return; - const html = sectionList.innerHTML; - const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')).map(a => a.textContent).filter(text => text.startsWith('$')); +// Main autocomplete function +function initAutocomplete() { const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); let cursorInactiveTimeout; @@ -41,45 +140,72 @@ function autocomplete() { } function updateAutocomplete() { - if (!autocompleteEnabled) { - hideAutocomplete(); - return; + if (!autocompleteEnabled || allFunctionNames.length === 0) { + hideAutocomplete(); + return; } + const inputText = textarea.value; const cursorPosition = textarea.selectionStart; + + // Find the last $ before cursor position let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); - if (dollarIndex === -1) { hideAutocomplete(); return; } + if (dollarIndex === -1) { + hideAutocomplete(); + return; + } + + // Get what user typed after $ (search term) const searchTerm = inputText.substring(dollarIndex, cursorPosition).toLowerCase(); autocompleteOutput.innerHTML = ''; - const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - const displayedFunctions = matchingFunctions.slice(0, 5); + + // Filter functions based on search term + const matchingFunctions = allFunctionNames.filter(func => + func.simpleName.toLowerCase().startsWith(searchTerm.toLowerCase()) + ); + + // Remove duplicates (keep only one entry per simpleName) + const uniqueFunctions = []; + const seenNames = new Set(); + + matchingFunctions.forEach(func => { + if (!seenNames.has(func.simpleName)) { + seenNames.add(func.simpleName); + uniqueFunctions.push(func); + } + }); + + // Take first 5 functions + const displayedFunctions = uniqueFunctions.slice(0, 5); selectedIndex = -1; Array.from(autocompleteOutput.children).forEach(child => child.classList.remove('selected')); + // Calculate position for autocomplete dropdown const { left, top } = textarea.getBoundingClientRect(); - const textareaStyle = window.getComputedStyle(textarea); let lineHeight = parseInt(textareaStyle.lineHeight) || 16; const paddingTop = parseInt(textareaStyle.paddingTop) || 0; const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; - - const x = left + textarea.selectionStart * 8; - - let y = top + paddingTop + borderTopWidth + (Math.floor(inputText.substring(0, cursorPosition).split('\n').length)) * lineHeight + 30; + + // Calculate position based on cursor + const cursorLine = inputText.substring(0, cursorPosition).split('\n').length - 1; + const cursorInLine = cursorPosition - inputText.substring(0, cursorPosition).lastIndexOf('\n') - 1; + + // Approximate cursor position (this is a simplification) + const x = left + cursorInLine * 8; // 8px per character approximation + const y = top + paddingTop + borderTopWidth + cursorLine * lineHeight + 30; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; autocompleteOutput.style.top = `${y}px`; autocompleteOutput.style.zIndex = '1000'; + // Create autocomplete items displayedFunctions.forEach((func, index) => { const span = document.createElement('span'); - span.textContent = func; + span.textContent = func.simpleName; span.addEventListener('click', () => { - const inputText = textarea.value; - const cursorPosition = textarea.selectionStart; - let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); - selectFunction(func, dollarIndex, cursorPosition, inputText); + selectFunction(func.fullTag, dollarIndex, cursorPosition, inputText); }); autocompleteOutput.appendChild(span); }); @@ -88,46 +214,20 @@ function autocomplete() { cursorInactiveTimeout = setTimeout(hideAutocomplete, 10000); } - // Function to insert a selected function with API data - function selectFunction(func, dollarIndex, cursorPosition, inputText) { - // Get function name without brackets and arguments - const functionName = func.split('[')[0]; + // Function to insert selected function + function selectFunction(funcToInsert, dollarIndex, cursorPosition, inputText) { + textarea.value = inputText.substring(0, dollarIndex) + funcToInsert + inputText.substring(cursorPosition); - // Send request to API - fetch(`https://botdesignerdiscord.com/public/api/function/${functionName}`) - .then(response => { - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - return response.json(); - }) - .then(data => { - if (data && data.tag) { - // If tag is received from API response, use it - const functionToInsert = data.tag; - textarea.value = inputText.substring(0, dollarIndex) + functionToInsert + inputText.substring(cursorPosition); - textarea.selectionStart = textarea.selectionEnd = dollarIndex + functionToInsert.length; - } else { - // If tag is not found, use original function name - console.warn('No tag found in API response for function:', functionName); - textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); - textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - } - hideAutocomplete(); - textarea.focus(); - }) - .catch(error => { - console.error('Error fetching function info:', error); - // In case of error, use original function name - textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); - textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - hideAutocomplete(); - textarea.focus(); - }); + // Position cursor after inserted function + textarea.selectionStart = textarea.selectionEnd = dollarIndex + funcToInsert.length; + + hideAutocomplete(); + textarea.focus(); } function handleArrowKeys(event) { if (autocompleteOutput.children.length === 0) return; + if (event.key === 'ArrowDown') { event.preventDefault(); selectedIndex = Math.min(selectedIndex + 1, autocompleteOutput.children.length - 1); @@ -136,13 +236,21 @@ function autocomplete() { selectedIndex = Math.max(selectedIndex - 1, 0); } else if (event.key === 'Enter' && selectedIndex !== -1) { event.preventDefault(); - const selectedFunction = autocompleteOutput.children[selectedIndex].textContent; + const selectedSpan = autocompleteOutput.children[selectedIndex]; + const selectedFunctionName = selectedSpan.textContent; + + // Find the full tag for this function + const funcData = allFunctionNames.find(f => f.simpleName === selectedFunctionName); + const funcToInsert = funcData ? funcData.fullTag : selectedFunctionName; + const inputText = textarea.value; const cursorPosition = textarea.selectionStart; let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); - selectFunction(selectedFunction, dollarIndex, cursorPosition, inputText); + + selectFunction(funcToInsert, dollarIndex, cursorPosition, inputText); return; } + highlightSelected(); } @@ -152,9 +260,11 @@ function autocomplete() { }); } + // Setup event listeners for textarea if (textarea) { textarea.addEventListener('input', updateAutocomplete); textarea.addEventListener('mouseup', updateAutocomplete); + textarea.addEventListener('keydown', event => { if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Enter') { handleArrowKeys(event); @@ -216,8 +326,10 @@ function addTooltips() { lineHeight = isNaN(lineHeight) ? 16 : lineHeight; const paddingTop = parseInt(textareaStyle.paddingTop) || 0; const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; - const x = left + cursor * 8; - const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 30; + + const cursorLine = text.substring(0, cursor).split('\n').length - 1; + const x = left + (cursor - text.substring(0, cursor).lastIndexOf('\n') - 1) * 8; + const y = top + paddingTop + borderTopWidth + cursorLine * lineHeight + 30; tooltip.style.left = `${x}px`; tooltip.style.top = `${y}px`; @@ -232,14 +344,21 @@ function addTooltips() { function updateAutocompleteState() { const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); + if (!autocompleteEnabled) { autocompleteOutput.innerHTML = ''; // Clear autocomplete textarea.removeEventListener('input', updateAutocomplete); textarea.removeEventListener('mouseup', updateAutocomplete); - document.getElementById('tooltip').style.display = 'none'; // Hide tooltip - textarea.removeEventListener('keyup',updateTooltip) - textarea.removeEventListener('mouseup',updateTooltip) + + // Hide tooltip + const tooltip = document.getElementById('tooltip'); + if (tooltip) { + tooltip.style.display = 'none'; + } + textarea.removeEventListener('keyup', updateTooltip); + textarea.removeEventListener('mouseup', updateTooltip); } else { + // Re-add event listeners if they were removed textarea.addEventListener('input', updateAutocomplete); textarea.addEventListener('mouseup', updateAutocomplete); textarea.addEventListener('keyup', updateTooltip); @@ -247,9 +366,17 @@ function updateAutocompleteState() { } } -document.addEventListener("DOMContentLoaded", function() { +document.addEventListener("DOMContentLoaded", async function() { if (window.location.href.includes('editor.html')) { - autocomplete(); + // Load functions from API first + const apiLoaded = await loadFunctionsFromAPI(); + + if (!apiLoaded) { + console.log('Falling back to DOM parsing for functions'); + } + + // Initialize autocomplete with loaded functions + initAutocomplete(); addTooltips(); updateAutocompleteState(); } @@ -258,7 +385,7 @@ document.addEventListener("DOMContentLoaded", function() { window.addEventListener('beforeunload', function (event) { const textarea = document.getElementById('editor'); - if (textarea.value.trim() === '') { + if (textarea && textarea.value.trim() === '') { return; } From 6a9bae524fcecee91db1b0bcf59a10829bdcfccb Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:01:14 +0300 Subject: [PATCH 0968/1179] Update autocomplete.js --- src/theme/autocomplete.js | 231 ++++++-------------------------------- 1 file changed, 34 insertions(+), 197 deletions(-) diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js index f80b4a13f9e..d08dbc62cae 100644 --- a/src/theme/autocomplete.js +++ b/src/theme/autocomplete.js @@ -1,110 +1,5 @@ // Setting let autocompleteEnabled = true; -let allFunctions = []; // Array to store all functions from API -let allFunctionNames = []; // Array to store simplified function names (without parameters) - -// Load functions from API on page load -async function loadFunctionsFromAPI() { - try { - const response = await fetch('https://botdesignerdiscord.com/public/api/function_list'); - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - const data = await response.json(); - - // Store all functions with their full tag information - allFunctions = data; - - // Extract simplified function names for autocomplete matching - // This includes both versions with and without brackets - allFunctionNames = []; - - data.forEach(func => { - const tag = func.tag; - // Extract base function name (without parameters) - const baseName = tag.split('[')[0]; - - // Add both versions to the array for better autocomplete - if (tag.includes('[')) { - // Add version with brackets - allFunctionNames.push({ - simpleName: baseName + '[]', - fullTag: tag, - hasParams: true, - baseName: baseName - }); - - // Also add version without brackets if it doesn't exist already - if (!allFunctionNames.some(f => f.simpleName === baseName)) { - allFunctionNames.push({ - simpleName: baseName, - fullTag: baseName, - hasParams: false, - baseName: baseName - }); - } - } else { - // Function without brackets - allFunctionNames.push({ - simpleName: baseName, - fullTag: tag, - hasParams: false, - baseName: baseName - }); - } - }); - - console.log(`Loaded ${allFunctions.length} functions from API`); - return true; - } catch (error) { - console.error('Error loading functions from API:', error); - // If API fails, use fallback to DOM parsing - loadFunctionsFromDOM(); - return false; - } -} - -// Fallback function to load functions from DOM if API fails -function loadFunctionsFromDOM() { - const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')).find(li => li.querySelector('div')?.textContent.trim() === 'Functions'); - if (!functionsHeader) return; - - const sectionList = functionsHeader.nextElementSibling; - if (!sectionList) return; - - const html = sectionList.innerHTML; - const domFunctions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')).map(a => a.textContent).filter(text => text.startsWith('$')); - - allFunctionNames = []; - domFunctions.forEach(func => { - const baseName = func.split('[')[0]; - - if (func.includes('[')) { - allFunctionNames.push({ - simpleName: baseName + '[]', - fullTag: func, - hasParams: true, - baseName: baseName - }); - - if (!allFunctionNames.some(f => f.simpleName === baseName)) { - allFunctionNames.push({ - simpleName: baseName, - fullTag: baseName, - hasParams: false, - baseName: baseName - }); - } - } else { - allFunctionNames.push({ - simpleName: baseName, - fullTag: func, - hasParams: false, - baseName: baseName - }); - } - }); -} function changeAutocomplete() { autocompleteEnabled = !autocompleteEnabled; @@ -125,8 +20,14 @@ function autoSettingChange(buttonName, status) { button.style.background = status ? activeGradient : inactiveGradient; } -// Main autocomplete function -function initAutocomplete() { +// Main autocomplete +function autocomplete() { + const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')).find(li => li.querySelector('div')?.textContent.trim() === 'Functions'); + if (!functionsHeader) return; + const sectionList = functionsHeader.nextElementSibling; + if (!sectionList) return; + const html = sectionList.innerHTML; + const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')).map(a => a.textContent).filter(text => text.startsWith('$')); const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); let cursorInactiveTimeout; @@ -140,73 +41,41 @@ function initAutocomplete() { } function updateAutocomplete() { - if (!autocompleteEnabled || allFunctionNames.length === 0) { - hideAutocomplete(); - return; + if (!autocompleteEnabled) { + hideAutocomplete(); + return; } - const inputText = textarea.value; const cursorPosition = textarea.selectionStart; - - // Find the last $ before cursor position let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); - if (dollarIndex === -1) { - hideAutocomplete(); - return; - } - - // Get what user typed after $ (search term) + if (dollarIndex === -1) { hideAutocomplete(); return; } const searchTerm = inputText.substring(dollarIndex, cursorPosition).toLowerCase(); autocompleteOutput.innerHTML = ''; - - // Filter functions based on search term - const matchingFunctions = allFunctionNames.filter(func => - func.simpleName.toLowerCase().startsWith(searchTerm.toLowerCase()) - ); - - // Remove duplicates (keep only one entry per simpleName) - const uniqueFunctions = []; - const seenNames = new Set(); - - matchingFunctions.forEach(func => { - if (!seenNames.has(func.simpleName)) { - seenNames.add(func.simpleName); - uniqueFunctions.push(func); - } - }); - - // Take first 5 functions - const displayedFunctions = uniqueFunctions.slice(0, 5); + const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); + const displayedFunctions = matchingFunctions.slice(0, 5); selectedIndex = -1; Array.from(autocompleteOutput.children).forEach(child => child.classList.remove('selected')); - // Calculate position for autocomplete dropdown const { left, top } = textarea.getBoundingClientRect(); + const textareaStyle = window.getComputedStyle(textarea); let lineHeight = parseInt(textareaStyle.lineHeight) || 16; const paddingTop = parseInt(textareaStyle.paddingTop) || 0; const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; - - // Calculate position based on cursor - const cursorLine = inputText.substring(0, cursorPosition).split('\n').length - 1; - const cursorInLine = cursorPosition - inputText.substring(0, cursorPosition).lastIndexOf('\n') - 1; - - // Approximate cursor position (this is a simplification) - const x = left + cursorInLine * 8; // 8px per character approximation - const y = top + paddingTop + borderTopWidth + cursorLine * lineHeight + 30; + + const x = left + textarea.selectionStart * 8; + + let y = top + paddingTop + borderTopWidth + (Math.floor(inputText.substring(0, cursorPosition).split('\n').length)) * lineHeight + 30; autocompleteOutput.style.position = 'absolute'; autocompleteOutput.style.left = `${x}px`; autocompleteOutput.style.top = `${y}px`; autocompleteOutput.style.zIndex = '1000'; - // Create autocomplete items displayedFunctions.forEach((func, index) => { const span = document.createElement('span'); - span.textContent = func.simpleName; - span.addEventListener('click', () => { - selectFunction(func.fullTag, dollarIndex, cursorPosition, inputText); - }); + span.textContent = func; + span.addEventListener('click', () => selectFunction(func,dollarIndex,cursorPosition,inputText)); autocompleteOutput.appendChild(span); }); @@ -214,20 +83,15 @@ function initAutocomplete() { cursorInactiveTimeout = setTimeout(hideAutocomplete, 10000); } - // Function to insert selected function - function selectFunction(funcToInsert, dollarIndex, cursorPosition, inputText) { - textarea.value = inputText.substring(0, dollarIndex) + funcToInsert + inputText.substring(cursorPosition); - - // Position cursor after inserted function - textarea.selectionStart = textarea.selectionEnd = dollarIndex + funcToInsert.length; - + function selectFunction(func,dollarIndex,cursorPosition,inputText) { + textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); + textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; hideAutocomplete(); textarea.focus(); } function handleArrowKeys(event) { if (autocompleteOutput.children.length === 0) return; - if (event.key === 'ArrowDown') { event.preventDefault(); selectedIndex = Math.min(selectedIndex + 1, autocompleteOutput.children.length - 1); @@ -236,21 +100,13 @@ function initAutocomplete() { selectedIndex = Math.max(selectedIndex - 1, 0); } else if (event.key === 'Enter' && selectedIndex !== -1) { event.preventDefault(); - const selectedSpan = autocompleteOutput.children[selectedIndex]; - const selectedFunctionName = selectedSpan.textContent; - - // Find the full tag for this function - const funcData = allFunctionNames.find(f => f.simpleName === selectedFunctionName); - const funcToInsert = funcData ? funcData.fullTag : selectedFunctionName; - + const selectedFunction = autocompleteOutput.children[selectedIndex].textContent; const inputText = textarea.value; const cursorPosition = textarea.selectionStart; let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); - - selectFunction(funcToInsert, dollarIndex, cursorPosition, inputText); + selectFunction(selectedFunction,dollarIndex,cursorPosition,inputText); return; } - highlightSelected(); } @@ -260,11 +116,9 @@ function initAutocomplete() { }); } - // Setup event listeners for textarea if (textarea) { textarea.addEventListener('input', updateAutocomplete); textarea.addEventListener('mouseup', updateAutocomplete); - textarea.addEventListener('keydown', event => { if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Enter') { handleArrowKeys(event); @@ -326,10 +180,8 @@ function addTooltips() { lineHeight = isNaN(lineHeight) ? 16 : lineHeight; const paddingTop = parseInt(textareaStyle.paddingTop) || 0; const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; - - const cursorLine = text.substring(0, cursor).split('\n').length - 1; - const x = left + (cursor - text.substring(0, cursor).lastIndexOf('\n') - 1) * 8; - const y = top + paddingTop + borderTopWidth + cursorLine * lineHeight + 30; + const x = left + cursor * 8; + const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 30; tooltip.style.left = `${x}px`; tooltip.style.top = `${y}px`; @@ -344,21 +196,14 @@ function addTooltips() { function updateAutocompleteState() { const textarea = document.getElementById('editor'); const autocompleteOutput = document.getElementById('autocomplete'); - if (!autocompleteEnabled) { autocompleteOutput.innerHTML = ''; // Clear autocomplete textarea.removeEventListener('input', updateAutocomplete); textarea.removeEventListener('mouseup', updateAutocomplete); - - // Hide tooltip - const tooltip = document.getElementById('tooltip'); - if (tooltip) { - tooltip.style.display = 'none'; - } - textarea.removeEventListener('keyup', updateTooltip); - textarea.removeEventListener('mouseup', updateTooltip); + document.getElementById('tooltip').style.display = 'none'; // Hide tooltip + textarea.removeEventListener('keyup',updateTooltip) + textarea.removeEventListener('mouseup',updateTooltip) } else { - // Re-add event listeners if they were removed textarea.addEventListener('input', updateAutocomplete); textarea.addEventListener('mouseup', updateAutocomplete); textarea.addEventListener('keyup', updateTooltip); @@ -366,17 +211,9 @@ function updateAutocompleteState() { } } -document.addEventListener("DOMContentLoaded", async function() { +document.addEventListener("DOMContentLoaded", function() { if (window.location.href.includes('editor.html')) { - // Load functions from API first - const apiLoaded = await loadFunctionsFromAPI(); - - if (!apiLoaded) { - console.log('Falling back to DOM parsing for functions'); - } - - // Initialize autocomplete with loaded functions - initAutocomplete(); + autocomplete(); addTooltips(); updateAutocompleteState(); } @@ -385,7 +222,7 @@ document.addEventListener("DOMContentLoaded", async function() { window.addEventListener('beforeunload', function (event) { const textarea = document.getElementById('editor'); - if (textarea && textarea.value.trim() === '') { + if (textarea.value.trim() === '') { return; } From be58050d00a3e02dbd6503436117a5858c49c256 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:11:28 +0300 Subject: [PATCH 0969/1179] Update webhooks.md --- src/guides/general/webhooks.md | 624 +++++++++++++++++---------------- 1 file changed, 325 insertions(+), 299 deletions(-) diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 38a9821c1cb..8036e194d83 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -1,24 +1,24 @@ # Webhooks This wiki explains how to create and use webhooks in BDFD. - -```admonish warning -In this wiki we use functions that only work on [**BDScript 2**](./bds2/aboutBDScript2.md). We recommend you to use the same script language to avoid problems with examples. -``` + +```admonish warning +In this wiki we use functions that only work on [**BDScript 2**](./bds2/aboutBDScript2.md). We recommend you to use the same script language to avoid problems with examples. +``` ## Content [**Functions Used**](#functions-used) > [**$webhookCreate[]**](#webhookcreate) > [**$webhookSend[]**](#webhooksend) > [**$webhookDelete[]**](#webhookDelete) > [**$webhookAvatarURL[]**](#webhookavatarurl) > [**$webhookUsername[]**](#webhookusername) > [**$webhookTitle[]**](#webhooktitle) > [**$webhookDescription[]**](#webhookdescription) > [**$webhookFooter[]**](#webhookfooter) > [**$webhookContent[]**](#webhookcontent) > [**$webhookColor[]**](#webhookcolor) > [**Beautiful Webhook**](#beautiful-webhook) ## Functions Used - [`$webhookCreate[]`](../../bdscript/webhookCreate.md) -- [`$webhookSend[]`](../../bdscript/webhookSend.md) -- [`$webhookDelete[]`](../../bdscript/webhookDelete.md) -- [`$webhookAvatarURL[]`](../../bdscript/webhookAvatarURL.md) -- [`$webhookUsername[]`](../../bdscript/webhookUsername.md) -- [`$webhookTitle[]`](../../bdscript/webhookTitle.md) -- [`$webhookDescription[]`](../../bdscript/webhookDescription.md) -- [`$webhookFooter[]`](../../bdscript/webhookFooter.md) -- [`$webhookContent[]`](../../bdscript/webhookContent.md) -- [`$webhookColor[]`](../../bdscript/webhookColor.md) +- [`$webhookSend[]`](../../bdscript/webhookSend.md) +- [`$webhookDelete[]`](../../bdscript/webhookDelete.md) +- [`$webhookAvatarURL[]`](../../bdscript/webhookAvatarURL.md) +- [`$webhookUsername[]`](../../bdscript/webhookUsername.md) +- [`$webhookTitle[]`](../../bdscript/webhookTitle.md) +- [`$webhookDescription[]`](../../bdscript/webhookDescription.md) +- [`$webhookFooter[]`](../../bdscript/webhookFooter.md) +- [`$webhookContent[]`](../../bdscript/webhookContent.md) +- [`$webhookColor[]`](../../bdscript/webhookColor.md) ## Support Functions Used - [`$var[]`](../../bdscript/var.md) @@ -48,26 +48,26 @@ $webhookCreate[Channel ID;Username;(Avatar URL)] ``` $nomention $webhookCreate[$channelID;BDFD Webhook 🤖] -``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - 1234abcd567ABCDEFG890H_654679203GDGJEMFNXH.6479304948 -``` - -```admonish question title="What is this?" -How [`$channelID`](../../bdscript/channelID.md) works? -``` +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + 1234abcd567ABCDEFG890H_654679203GDGJEMFNXH.6479304948 +``` + +```admonish question title="What is this?" +How [`$channelID`](../../bdscript/channelID.md) works? +``` ~~~admonish tip You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../introduction/variables.md) to store the Webhook URL. @@ -76,23 +76,23 @@ You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../i $var[Webhook;$webhookCreate[$channelID;Secret]] Created and saved! ``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - Created ans saved! -``` - -> How [`$var[]`](../../bdscript/var.md) and [`$channelID`](../../bdscript/channelID.md) works? + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Created ans saved! +``` + +> How [`$var[]`](../../bdscript/var.md) and [`$channelID`](../../bdscript/channelID.md) works? ~~~ @@ -105,23 +105,23 @@ $webhookSend[Webhook URL;(Content;Title;Title URL;Description;Color hex;Author;A ``` ### Parameters -- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. -- `Content` `(Type: String || Flag: Vacantable)`: The text that is shown above the embed. -- `Title` `(Type: String || Flag: Vacantable)`: The text that will be used as the title. -- `Title URL` `(Type: URL || Flag: Vacantable)`: The URL that will be applied to the title. -- `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. -- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../../tools/color.md) to set the embed border color as. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../../tools/color.md) to select the best color! -``` - -- `Author` `(Type: String || Flag: Vacantable )`: The text that appears at the author. -- `Author icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the author. -- `Footer` `(Type: String || Flag: Vacantable)`: The text to set the footer as. -- `Footer icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the footer. -- `Thumbnail` `(Type: URL || Flag: Vacantable)`: The image to set as the thumbnail. -- `Image` `(Type: URL || Flag: Vacantable)`: The image that appears above the footer. -- `Add timestamp?` `(Type: Bool || Flag: Vacantable)`: Adds a timestamp to the footer. +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Content` `(Type: String || Flag: Vacantable)`: The text that is shown above the embed. +- `Title` `(Type: String || Flag: Vacantable)`: The text that will be used as the title. +- `Title URL` `(Type: URL || Flag: Vacantable)`: The URL that will be applied to the title. +- `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. +- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../../tools/color.md) to set the embed border color as. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../../tools/color.md) to select the best color! +``` + +- `Author` `(Type: String || Flag: Vacantable )`: The text that appears at the author. +- `Author icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the author. +- `Footer` `(Type: String || Flag: Vacantable)`: The text to set the footer as. +- `Footer icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the footer. +- `Thumbnail` `(Type: URL || Flag: Vacantable)`: The image to set as the thumbnail. +- `Image` `(Type: URL || Flag: Vacantable)`: The image that appears above the footer. +- `Add timestamp?` `(Type: Bool || Flag: Vacantable)`: Adds a timestamp to the footer. ## Example ``` @@ -129,30 +129,30 @@ $nomention $var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookSend[$var[webhook];I'm the best webhook;Title;;It's a description!;#673ab7;;;;;;false] ``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- username: Test webhook - color: "#fff" - bot: true - verified: true - content: | - I'm the best webhook - embed: - title: Title - description: It's a description! - color: "#673ab7" - footer: - text: Footer Text Here -``` - -```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? -``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- username: Test webhook + color: "#fff" + bot: true + verified: true + content: | + I'm the best webhook + embed: + title: Title + description: It's a description! + color: "#673ab7" + footer: + text: Footer Text Here +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookDelete Deletes the wehook. @@ -163,34 +163,34 @@ $webhookDelete[Webhook URL] ``` ### Parameters -- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to delete. +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to delete. ## Example ``` -$nomention -$var[webhook;$webhookCreate[$channelID;Test webhook]] -$webhookDelete[$var[webhook]] +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookDelete[$var[webhook]] Deleted! ``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - Deleted! -``` - -```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? -``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Deleted! +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookAvatarURL Changes the webhook's avatar. @@ -201,35 +201,35 @@ $webhookAvatarURL[Webhook URL;New avatar URL] ``` ### Parameters -- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to modify. -- `New avatar URL` `(Type: URL || Flag: Required)`: The new avatar image URL for the webhook. +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to modify. +- `New avatar URL` `(Type: URL || Flag: Required)`: The new avatar image URL for the webhook. ## Example ``` -$nomention -$var[webhook;$webhookCreate[$channelID;Test webhook]] -$webhookAvatarURL[$var[webhook];$authorAvatar] +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookAvatarURL[$var[webhook];$authorAvatar] New avatar for webhook! ``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - New avatar for webhook! -``` - -```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md), [`$var[]`](../../bdscript/var.md) and [`$authorAvatar`](../../bdscript/authorAvatar.md) works? -``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + New avatar for webhook! +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md), [`$var[]`](../../bdscript/var.md) and [`$authorAvatar`](../../bdscript/authorAvatar.md) works? +``` # $webhookUsername Changes the webhook's username. @@ -240,35 +240,35 @@ $webhookUsername[Webhook URL;New username] ``` ### Parameters -- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to modify. -- `New username` `(Type: String || Flag: Required)`: The new username for the webhook. +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to modify. +- `New username` `(Type: String || Flag: Required)`: The new username for the webhook. ## Example ``` -$nomention -$var[webhook;$webhookCreate[$channelID;Test webhook]] -$webhookUsername[$var[webhook];BDFD Support] +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookUsername[$var[webhook];BDFD Support] New username for webhook! ``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - New username for webhook! -``` - -```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? -``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + New username for webhook! +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookTitle Adds title to the webhook. @@ -279,35 +279,35 @@ $webhookTitle[Webhook URL;Text] ``` ### Parameters -- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. -- `Text` `(Type: String || Flag: Required)`: The title text to add to the embed of the webhook. +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The title text to add to the embed of the webhook. ## Example ``` -$nomention -$var[webhook;$webhookCreate[$channelID;Test webhook]] +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookTitle[$var[webhook];My Webhook Title] ``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 674344467746258975 - username: Test webhook - color: "#fff" - bot: true - verified: false - content: | - embed: - title: My Webhook Title -``` - -```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? -``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 674344467746258975 + username: Test webhook + color: "#fff" + bot: true + verified: false + content: | + embed: + title: My Webhook Title +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookDescription Adds description to the webhook. @@ -318,35 +318,35 @@ $webhookDescription[Webhook URL;Text] ``` ### Parameters -- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. -- `Text` `(Type: String || Flag: Required)`: The description text to add to the embed of the webhook. +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The description text to add to the embed of the webhook. ## Example ``` -$nomention -$var[webhook;$webhookCreate[$channelID;Test webhook]] +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookDescription[$var[webhook];This is a detailed description for my webhook.] ``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 887433921657176065 - username: Test webhook - color: "#fff" - bot: true - verified: false - content: - embed: - description: This is a detailed description for my webhook. -``` - -```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? -``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 887433921657176065 + username: Test webhook + color: "#fff" + bot: true + verified: false + content: + embed: + description: This is a detailed description for my webhook. +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookFooter Adds footer to the webhook. @@ -357,35 +357,35 @@ $webhookFooter[Webhook URL;Text] ``` ### Parameters -- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. -- `Text` `(Type: String || Flag: Required)`: The footer text to add to the embed of the webhook. +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The footer text to add to the embed of the webhook. ## Example ``` -$nomention -$var[webhook;$webhookCreate[$channelID;Test webhook]] +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookFooter[$var[webhook];Footer Text Here] ``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 887433921657176065 - username: Test webhook - color: "#fff" - bot: true - verified: false - embed: - footer: - text: Footer Text Here -``` - -```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? -``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 887433921657176065 + username: Test webhook + color: "#fff" + bot: true + verified: false + embed: + footer: + text: Footer Text Here +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookContent Adds content to the webhook. @@ -395,35 +395,35 @@ Adds content to the webhook. $webhookContent[Webhook URL;Text] ``` -### Parameters +### Parameters - `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. -- `Text` `(Type: String || Flag: Required)`: The content text to add to the webhook. +- `Text` `(Type: String || Flag: Required)`: The content text to add to the webhook. ## Example ``` -$nomention -$var[webhook;$webhookCreate[$channelID;Test webhook]] +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] $webhookContent[$var[webhook];Hello from my webhook!] -``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 674344467746258975 - username: Test webhook - color: "#fff" - bot: true - verified: true - content: | - Hello from my webhook! -``` - -```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? -``` +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 674344467746258975 + username: Test webhook + color: "#fff" + bot: true + verified: true + content: | + Hello from my webhook! +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$channelID`](../../bdscript/channelID.md) and [`$var[]`](../../bdscript/var.md) works? +``` # $webhookColor Adds color to the webhook. @@ -434,50 +434,76 @@ $webhookColor[Webhook URL;Color hex] ``` ### Parameters -- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. -- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../../tools/color.md) to set the embed border color as. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../../tools/color.md) to select the best color! -``` +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../../tools/color.md) to set the embed border color as. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../../tools/color.md) to select the best color! +``` ## Example ``` -$nomention -$var[webhook;$webhookCreate[$channelID;Test webhook]] -$webhookColor[$var[webhook];#673ab7] +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookColor[$var[webhook];#673ab7] $webhookDescriprion[⬅️ Embed border color.] ``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 674344467746258975 - username: Test webhook - color: "#fff" - bot: true - verified: false - content: - embed: - description: ⬅️ Embed border color. - color: "#673ab7" -``` - -```admonish question title="What is this?" -How [`$webhookCreate[]`](#webhookcreate), [`$webhookDescriprion[]`](#webhookdescriprion), [`$channelID`](../../bdscript/channelID.md), [`$var[]`](../../bdscript/var.md) works? -``` - + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 674344467746258975 + username: Test webhook + color: "#fff" + bot: true + verified: false + content: + embed: + description: ⬅️ Embed border color. + color: "#673ab7" +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](#webhookcreate), [`$webhookDescriprion[]`](#webhookdescriprion), [`$channelID`](../../bdscript/channelID.md), [`$var[]`](../../bdscript/var.md) works? +``` + # Beautiful webhook -Here is one example of how to use a webhook. - -``` -$nomention -$var[webhook;$webhookCreate[$channelID;I'm webhook 😎;$serverIcon]] -$webhookContent[$var[webhook];👇 Read before chatting] -$webhookTitle[$var[webhook];📚 Rules] -$webhookDescription[$var[webhook];1. Be patient -2. Just chill] -$webhookFooter[$var[webhook];Made by BDFD] -``` \ No newline at end of file + +Here is one example of how to use a webhook. + +``` +$nomention +$var[webhook;$webhookCreate[$channelID;I'm webhook 😎;$authorAvatar]] +$webhookContent[$var[webhook];👇 Read before chatting] +$webhookTitle[$var[webhook];📚 Rules] +$webhookDescription[$var[webhook];Just be cool!] +$webhookFooter[$var[webhook];Made by BDFD] +$webhookColor[$var[webhook];#673ab7] +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 803569638084313098 + username: I'm webhook 😎 + color: "#fff" + bot: true + verified: false + content: | + 👇 Read before chatting + embed: + title: 📚 Rules + description: Just be cool! + color: "#673ab7" + footer: + text: Made by BDFD +``` + +```admonish question title="What is this?" +How [`$authorAvatar`](../../bdscript/authorAvatar.md) works? +``` From 731583f41965a73bcf35cc74421f9d31421dd994 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:13:06 +0300 Subject: [PATCH 0970/1179] Create webhookCreate.md --- src/bdscript/webhookCreate.md | 72 +++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/bdscript/webhookCreate.md diff --git a/src/bdscript/webhookCreate.md b/src/bdscript/webhookCreate.md new file mode 100644 index 00000000000..ddcae053b7e --- /dev/null +++ b/src/bdscript/webhookCreate.md @@ -0,0 +1,72 @@ +# $webhookCreate +Creates and returns the URL of the newly created webhook. + +```admonish danger +Webhook URLs should be kept private, don't share them! +``` + +```admonish warning title="Limit" +Only 10 webhooks can be created per channel. +``` + +## Syntax +``` +$webhookCreate[Channel ID;Username;(Avatar URL)] +``` + +### Parameters +- `Channel ID` `(Type: Snowflake || Flag: Required)`: The channel in which the webhook will be created. +- `Username` `(Type: String || Flag: Required)`: Name of the webhook that will be displayed in the channel. +- `Avatar URL` `(Type: String || Flag: Vacantable)`: Avatar of the webhook that will be displayed in the channel. + +## Example +``` +$nomention +$webhookCreate[$channelID;BDFD Webhook 🤖] +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + 1234abcd567ABCDEFG890H_654679203GDGJEMFNXH.6479304948 +``` + +```admonish question title="What is this?" +How [`$channelID`](../../bdscript/channelID.md) works? +``` + +~~~admonish tip +You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../introduction/variables.md) to store the Webhook URL. + +```$nomention +$var[Webhook;$webhookCreate[$channelID;Secret]] +Created and saved! +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Created ans saved! +``` + +> How [`$var[]`](../../bdscript/var.md) and [`$channelID`](../../bdscript/channelID.md) works? + +~~~ From af3a7bb9ce324f3a4c90b974c05483671bc5ed65 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:16:46 +0300 Subject: [PATCH 0971/1179] Update webhookCreate.md --- src/bdscript/webhookCreate.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/webhookCreate.md b/src/bdscript/webhookCreate.md index ddcae053b7e..9d2d46562d0 100644 --- a/src/bdscript/webhookCreate.md +++ b/src/bdscript/webhookCreate.md @@ -70,3 +70,7 @@ Created and saved! > How [`$var[]`](../../bdscript/var.md) and [`$channelID`](../../bdscript/channelID.md) works? ~~~ + +```admonish info title="Read more" +For more information, read the the [Webhooks Guide](../guides/general/webhooks.md). +``` From 68515e6155c05bbb4defd07a448398e9eaa4fd8e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:17:16 +0300 Subject: [PATCH 0972/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index f4e7a48a23e..287e33fb841 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -474,6 +474,7 @@ - [$varExists](./bdscript/varExists.md) - [$variablesCount](./bdscript/variablesCount.md) - [$voiceUserLimit](./bdscript/voiceUserLimit.md) + - [$webhookCreate](./bdscript/webhookCreate.md) - [$year](./bdscript/year.md) - [Callbacks]() From 4eadfa2176f6ee13ccac31102bed623d18d05dd3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:17:50 +0300 Subject: [PATCH 0973/1179] Update book.toml --- book.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/book.toml b/book.toml index 64b27bf0b39..9eb66e9c684 100644 --- a/book.toml +++ b/book.toml @@ -81,7 +81,6 @@ assets_version = "3.0.2" # do not edit: managed by `mdbook-admonish install` "/bdscript/webhookAvatarURL.html" = "../guides/general/webhooks.html" "/bdscript/webhookColor.html" = "../guides/general/webhooks.html" "/bdscript/webhookContent.html" = "../guides/general/webhooks.html" -"/bdscript/webhookCreate.html" = "../guides/general/webhooks.html" "/bdscript/webhookDelete.html" = "../guides/general/webhooks.html" "/bdscript/webhookDescription.html" = "../guides/general/webhooks.html" "/bdscript/webhookFooter.html" = "../guides/general/webhooks.html" From 8004af08babf965891dcf0c8445d2053ca72e969 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:22:21 +0300 Subject: [PATCH 0974/1179] Create webhookSend.md --- src/bdscript/webhookSend.md | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/bdscript/webhookSend.md diff --git a/src/bdscript/webhookSend.md b/src/bdscript/webhookSend.md new file mode 100644 index 00000000000..70794e51836 --- /dev/null +++ b/src/bdscript/webhookSend.md @@ -0,0 +1,61 @@ +# $webhookSend +Sends message as the webhook. + +## Syntax +``` +$webhookSend[Webhook URL;(Content;Title;Title URL;Description;Color hex;Author;Author icon URL;Footer;Footer icon URL;Thumbnail URL;Image URL;Add timestamp?)] +``` + +### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Content` `(Type: String || Flag: Vacantable)`: The text that is shown above the embed. +- `Title` `(Type: String || Flag: Vacantable)`: The text that will be used as the title. +- `Title URL` `(Type: URL || Flag: Vacantable)`: The URL that will be applied to the title. +- `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. +- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../../tools/color.md) to select the best color! +``` + +- `Author` `(Type: String || Flag: Vacantable )`: The text that appears at the author. +- `Author icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the author. +- `Footer` `(Type: String || Flag: Vacantable)`: The text to set the footer as. +- `Footer icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the footer. +- `Thumbnail` `(Type: URL || Flag: Vacantable)`: The image to set as the thumbnail. +- `Image` `(Type: URL || Flag: Vacantable)`: The image that appears above the footer. +- `Add timestamp?` `(Type: Bool || Flag: Vacantable)`: Adds a timestamp to the footer. + +## Example +``` +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookSend[$var[webhook];I'm the best webhook;Title;;It's a description!;#673ab7;;;;;;false] +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- username: Test webhook + color: "#fff" + bot: true + verified: true + content: | + I'm the best webhook + embed: + title: Title + description: It's a description! + color: "#673ab7" + footer: + text: Footer Text Here +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](./webhookCreate.md), [`$channelID`](./channelID.md) and [`$var[]`](./var.md) works? +``` + +```admonish info title="Read more" +For more information, read the the [Webhooks Guide](../guides/general/webhooks.md). +``` From 2775a9837e83dba924fbf7751dc762631569f3c3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:23:44 +0300 Subject: [PATCH 0975/1179] Update webhookCreate.md --- src/bdscript/webhookCreate.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bdscript/webhookCreate.md b/src/bdscript/webhookCreate.md index 9d2d46562d0..7bbfe68bc4f 100644 --- a/src/bdscript/webhookCreate.md +++ b/src/bdscript/webhookCreate.md @@ -41,11 +41,11 @@ $webhookCreate[$channelID;BDFD Webhook 🤖] ``` ```admonish question title="What is this?" -How [`$channelID`](../../bdscript/channelID.md) works? +How [`$channelID`](./channelID.md) works? ``` ~~~admonish tip -You can use [`$var[]`](../../bdscript/var.md) or [other variable functions](../introduction/variables.md) to store the Webhook URL. +You can use [`$var[]`](./var.md) or [other variable functions](../guides/introduction/variables.md) to store the Webhook URL. ```$nomention $var[Webhook;$webhookCreate[$channelID;Secret]] @@ -67,7 +67,7 @@ Created and saved! Created ans saved! ``` -> How [`$var[]`](../../bdscript/var.md) and [`$channelID`](../../bdscript/channelID.md) works? +> How [`$var[]`](./var.md) and [`$channelID`](./channelID.md) works? ~~~ From d35861a3beac79f4b3989555e7dd4034551174b9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:25:17 +0300 Subject: [PATCH 0976/1179] Create webhookDelete.md --- src/bdscript/webhookDelete.md | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/bdscript/webhookDelete.md diff --git a/src/bdscript/webhookDelete.md b/src/bdscript/webhookDelete.md new file mode 100644 index 00000000000..cdcf2072302 --- /dev/null +++ b/src/bdscript/webhookDelete.md @@ -0,0 +1,41 @@ +# $webhookDelete +Deletes the wehook. + +## Syntax +``` +$webhookDelete[Webhook URL] +``` + +### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to delete. + +## Example +``` +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookDelete[$var[webhook]] +Deleted! +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Deleted! +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](./webhookCreate.md), [`$channelID`](./channelID.md) and [`$var[]`](./var.md) works? +``` + +```admonish info title="Read more" +For more information, read the the [Webhooks Guide](../guides/general/webhooks.md). +``` From a8076282d7f871e705caa84d9ba30a13f2fa7ccd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:26:51 +0300 Subject: [PATCH 0977/1179] Create webhookAvatarURL.md --- src/bdscript/webhookAvatarURL.md | 42 ++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/bdscript/webhookAvatarURL.md diff --git a/src/bdscript/webhookAvatarURL.md b/src/bdscript/webhookAvatarURL.md new file mode 100644 index 00000000000..054934d3a62 --- /dev/null +++ b/src/bdscript/webhookAvatarURL.md @@ -0,0 +1,42 @@ +# $webhookAvatarURL +Changes the webhook's avatar. + +## Syntax +``` +$webhookAvatarURL[Webhook URL;New avatar URL] +``` + +### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to modify. +- `New avatar URL` `(Type: URL || Flag: Required)`: The new avatar image URL for the webhook. + +## Example +``` +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookAvatarURL[$var[webhook];$authorAvatar] +New avatar for webhook! +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + New avatar for webhook! +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](./webhookCreate.md), [`$channelID`](./channelID.md), [`$var[]`](./var.md) and [`$authorAvatar`](./authorAvatar.md) works? +``` + +```admonish info title="Read more" +For more information, read the the [Webhooks Guide](../guides/general/webhooks.md). +``` From 6e524f2ed05b29f6216ad3085228c77a947321be Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:28:10 +0300 Subject: [PATCH 0978/1179] Create webhookUsername.md --- src/bdscript/webhookUsername.md | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/bdscript/webhookUsername.md diff --git a/src/bdscript/webhookUsername.md b/src/bdscript/webhookUsername.md new file mode 100644 index 00000000000..26cf502548c --- /dev/null +++ b/src/bdscript/webhookUsername.md @@ -0,0 +1,42 @@ +# $webhookUsername +Changes the webhook's username. + +## Syntax +``` +$webhookUsername[Webhook URL;New username] +``` + +### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to modify. +- `New username` `(Type: String || Flag: Required)`: The new username for the webhook. + +## Example +``` +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookUsername[$var[webhook];BDFD Support] +New username for webhook! +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + New username for webhook! +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](./webhookCreate.md), [`$channelID`](./channelID.md) and [`$var[]`](./var.md) works? +``` + +```admonish info title="Read more" +For more information, read the the [Webhooks Guide](../guides/general/webhooks.md). +``` From 6b6d210733e683a085ab812147a7ddb425d93b61 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:29:17 +0300 Subject: [PATCH 0979/1179] Create webhookTitle.md --- src/bdscript/webhookTitle.md | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/bdscript/webhookTitle.md diff --git a/src/bdscript/webhookTitle.md b/src/bdscript/webhookTitle.md new file mode 100644 index 00000000000..a79b02c01fe --- /dev/null +++ b/src/bdscript/webhookTitle.md @@ -0,0 +1,42 @@ +# $webhookTitle +Adds title to the webhook. + +## Syntax +``` +$webhookTitle[Webhook URL;Text] +``` + +### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The title text to add to the embed of the webhook. + +## Example +``` +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookTitle[$var[webhook];My Webhook Title] +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 674344467746258975 + username: Test webhook + color: "#fff" + bot: true + verified: false + content: | + embed: + title: My Webhook Title +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](./webhookCreate.md), [`$channelID`](./channelID.md) and [`$var[]`](./var.md) works? +``` + +```admonish info title="Read more" +For more information, read the the [Webhooks Guide](../guides/general/webhooks.md). +``` From 13d361869c582f541ee0be3e37c363359d89e9df Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:30:45 +0300 Subject: [PATCH 0980/1179] Create webhookDescription.md --- src/bdscript/webhookDescription.md | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/bdscript/webhookDescription.md diff --git a/src/bdscript/webhookDescription.md b/src/bdscript/webhookDescription.md new file mode 100644 index 00000000000..196c1ee133d --- /dev/null +++ b/src/bdscript/webhookDescription.md @@ -0,0 +1,42 @@ +# $webhookDescription +Adds description to the webhook. + +## Syntax +``` +$webhookDescription[Webhook URL;Text] +``` + +### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The description text to add to the embed of the webhook. + +## Example +``` +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookDescription[$var[webhook];This is a detailed description for my webhook.] +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 887433921657176065 + username: Test webhook + color: "#fff" + bot: true + verified: false + content: + embed: + description: This is a detailed description for my webhook. +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](./webhookCreate.md), [`$channelID`](./channelID.md) and [`$var[]`](./var.md) works? +``` + +```admonish info title="Read more" +For more information, read the the [Webhooks Guide](../guides/general/webhooks.md). +``` From ce03ecd3bb5186183e4fb3f72d7111c02f840473 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:31:58 +0300 Subject: [PATCH 0981/1179] Create webhookFooter.md --- src/bdscript/webhookFooter.md | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/bdscript/webhookFooter.md diff --git a/src/bdscript/webhookFooter.md b/src/bdscript/webhookFooter.md new file mode 100644 index 00000000000..a3c8fde84a1 --- /dev/null +++ b/src/bdscript/webhookFooter.md @@ -0,0 +1,42 @@ +# $webhookFooter +Adds footer to the webhook. + +## Syntax +``` +$webhookFooter[Webhook URL;Text] +``` + +### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The footer text to add to the embed of the webhook. + +## Example +``` +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookFooter[$var[webhook];Footer Text Here] +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 887433921657176065 + username: Test webhook + color: "#fff" + bot: true + verified: false + embed: + footer: + text: Footer Text Here +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](./webhookCreate.md), [`$channelID`](./channelID.md) and [`$var[]`](./var.md) works? +``` + +```admonish info title="Read more" +For more information, read the the [Webhooks Guide](../guides/general/webhooks.md). +``` From 9a9ab8018c56f59c9c6b731c747988c6915d28f4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:33:00 +0300 Subject: [PATCH 0982/1179] Create webhookContent.md --- src/bdscript/webhookContent.md | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/bdscript/webhookContent.md diff --git a/src/bdscript/webhookContent.md b/src/bdscript/webhookContent.md new file mode 100644 index 00000000000..befcaaa319a --- /dev/null +++ b/src/bdscript/webhookContent.md @@ -0,0 +1,41 @@ +# $webhookContent +Adds content to the webhook. + +## Syntax +``` +$webhookContent[Webhook URL;Text] +``` + +### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Text` `(Type: String || Flag: Required)`: The content text to add to the webhook. + +## Example +``` +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookContent[$var[webhook];Hello from my webhook!] +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 674344467746258975 + username: Test webhook + color: "#fff" + bot: true + verified: true + content: | + Hello from my webhook! +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](./webhookCreate.md), [`$channelID`](./channelID.md) and [`$var[]`](./var.md) works? +``` + +```admonish info title="Read more" +For more information, read the the [Webhooks Guide](../guides/general/webhooks.md). +``` From bed3104c39ee67c4160f1534b8b6b7933f57016a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:34:41 +0300 Subject: [PATCH 0983/1179] Create webhookColor.md --- src/bdscript/webhookColor.md | 47 ++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/bdscript/webhookColor.md diff --git a/src/bdscript/webhookColor.md b/src/bdscript/webhookColor.md new file mode 100644 index 00000000000..db86baf7724 --- /dev/null +++ b/src/bdscript/webhookColor.md @@ -0,0 +1,47 @@ +# $webhookColor +Adds color to the webhook. + +## Syntax +``` +$webhookColor[Webhook URL;Color hex] +``` + +### Parameters +- `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. +- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. +```admonish tip title="Color Picker" +You can use our ["Color" tool](../../tools/color.md) to select the best color! +``` + +## Example +``` +$nomention +$var[webhook;$webhookCreate[$channelID;Test webhook]] +$webhookColor[$var[webhook];#673ab7] +$webhookDescriprion[⬅️ Embed border color.] +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 674344467746258975 + username: Test webhook + color: "#fff" + bot: true + verified: false + content: + embed: + description: ⬅️ Embed border color. + color: "#673ab7" +``` + +```admonish question title="What is this?" +How [`$webhookCreate[]`](./webhookCreate.md), [`$webhookDescriprion[]`](./webhookDescriprion.md), [`$channelID`](./channelID.md), [`$var[]`](./var.md) works? +``` + +```admonish info title="Read more" +For more information, read the the [Webhooks Guide](../guides/general/webhooks.md). +``` From 959c0d856c21086653070a3eb111928387113cdd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:37:32 +0300 Subject: [PATCH 0984/1179] Update SUMMARY.md --- src/SUMMARY.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 287e33fb841..1b1d0df0684 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -474,7 +474,15 @@ - [$varExists](./bdscript/varExists.md) - [$variablesCount](./bdscript/variablesCount.md) - [$voiceUserLimit](./bdscript/voiceUserLimit.md) + - [$webhookAvatarURL](./bdscript/webhookAvatarURL.md) + - [$webhookColor](./bdscript/webhookColor.md) - [$webhookCreate](./bdscript/webhookCreate.md) + - [$webhookDelete](./bdscript/webhookDelete.md) + - [$webhookDescription](./bdscript/webhookDescription.md) + - [$webhookFooter](./bdscript/webhookFooter.md) + - [$webhookSend](./bdscript/webhookSend.md) + - [$webhookTitle](./bdscript/webhookTitle.md) + - [$webhookUsername](./bdscript/webhookUsername.md) - [$year](./bdscript/year.md) - [Callbacks]() From db53bbe15a80c1a404b68dccaa14d49f9f56baf9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:37:53 +0300 Subject: [PATCH 0985/1179] Update book.toml --- book.toml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/book.toml b/book.toml index 9eb66e9c684..59efa1d913d 100644 --- a/book.toml +++ b/book.toml @@ -78,16 +78,6 @@ assets_version = "3.0.2" # do not edit: managed by `mdbook-admonish install` "/bdscript/jsonStringify.html" = "../guides/general/jsonFunctions.html#jsonstringify" "/bdscript/jsonUnset.html" = "../guides/general/jsonFunctions.html#jsonunset" -"/bdscript/webhookAvatarURL.html" = "../guides/general/webhooks.html" -"/bdscript/webhookColor.html" = "../guides/general/webhooks.html" -"/bdscript/webhookContent.html" = "../guides/general/webhooks.html" -"/bdscript/webhookDelete.html" = "../guides/general/webhooks.html" -"/bdscript/webhookDescription.html" = "../guides/general/webhooks.html" -"/bdscript/webhookFooter.html" = "../guides/general/webhooks.html" -"/bdscript/webhookSend.html" = "../guides/general/webhooks.html" -"/bdscript/webhookTitle.html" = "../guides/general/webhooks.html" -"/bdscript/webhookUsername.html" = "../guides/general/webhooks.html" - "/bdscript/appendOptionSuggestion.html" = "../guides/general/interactions/slashCommands/autoComplete.html" "/bdscript/autoCompleteOptionName.html" = "../guides/general/interactions/slashCommands/autoComplete.html" "/bdscript/autoCompleteOptionValue.html" = "../guides/general/interactions/slashCommands/autoComplete.html" From 90dfc824a3380a706faea7f1cf4fe959bd415b6e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:42:17 +0300 Subject: [PATCH 0986/1179] Update webhookColor.md --- src/bdscript/webhookColor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/webhookColor.md b/src/bdscript/webhookColor.md index db86baf7724..272a681197c 100644 --- a/src/bdscript/webhookColor.md +++ b/src/bdscript/webhookColor.md @@ -39,7 +39,7 @@ $webhookDescriprion[⬅️ Embed border color.] ``` ```admonish question title="What is this?" -How [`$webhookCreate[]`](./webhookCreate.md), [`$webhookDescriprion[]`](./webhookDescriprion.md), [`$channelID`](./channelID.md), [`$var[]`](./var.md) works? +How [`$webhookCreate[]`](./webhookCreate.md), [`$webhookDescription[]`](./webhookDescription.md), [`$channelID`](./channelID.md), [`$var[]`](./var.md) works? ``` ```admonish info title="Read more" From 1cc429494a2bf8142829a2546aedd31a88c54dc2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:43:33 +0300 Subject: [PATCH 0987/1179] Update webhookColor.md --- src/bdscript/webhookColor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/webhookColor.md b/src/bdscript/webhookColor.md index 272a681197c..b720f2ff643 100644 --- a/src/bdscript/webhookColor.md +++ b/src/bdscript/webhookColor.md @@ -10,7 +10,7 @@ $webhookColor[Webhook URL;Color hex] - `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. - `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. ```admonish tip title="Color Picker" -You can use our ["Color" tool](../../tools/color.md) to select the best color! +You can use our ["Color" tool](../tools/color.md) to select the best color! ``` ## Example From b4a4f8c59ed0aaa116b3f9250675b2d9be92286b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:43:50 +0300 Subject: [PATCH 0988/1179] Update webhookSend.md --- src/bdscript/webhookSend.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/webhookSend.md b/src/bdscript/webhookSend.md index 70794e51836..9677bed1948 100644 --- a/src/bdscript/webhookSend.md +++ b/src/bdscript/webhookSend.md @@ -14,7 +14,7 @@ $webhookSend[Webhook URL;(Content;Title;Title URL;Description;Color hex;Author;A - `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. - `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. ```admonish tip title="Color Picker" -You can use our ["Color" tool](../../tools/color.md) to select the best color! +You can use our ["Color" tool](../tools/color.md) to select the best color! ``` - `Author` `(Type: String || Flag: Vacantable )`: The text that appears at the author. From 11a1b65e7630b25a2efa602dd8c48ef9f8e4377e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:47:22 +0300 Subject: [PATCH 0989/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index ad3b768edee..7050b25a6e8 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -31,6 +31,10 @@
  • Added $addMediaGalleryItem[]
  • Added $addActionRow[]
  • Added $addButtonCV2[]
  • +
  • Added $addMentionableSelect[]
  • +
  • Added $getMentionableSelectUserID[]
  • +
  • Added $getMentionableSelectUserIDs[]
  • +
  • Added $getMentionableSelectUserCount
  • @@ -811,3 +815,4 @@ If you want to access this changelog externally, we have a [JSON version](https: ``` + From 97a58600d64b137bbbc265f99da433b2b96885e3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:48:44 +0300 Subject: [PATCH 0990/1179] Update CHANGELOG.json --- external/CHANGELOG.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/external/CHANGELOG.json b/external/CHANGELOG.json index 078ed0710d9..3a70bf046bf 100644 --- a/external/CHANGELOG.json +++ b/external/CHANGELOG.json @@ -9,7 +9,11 @@ "Added `$addMediaGallery[]`", "Added `$addMediaGalleryItem[]`", "Added `$addActionRow[]`", - "Added `$addButtonCV2[]`" + "Added `$addButtonCV2[]`", + "Added `$addMentionableSelect[]`", + "Added `$getMentionableSelectUserID[]`", + "Added `$getMentionableSelectUserIDs[]`", + "Added `$getMentionableSelectUserCount`", ] }, "2025": { @@ -744,3 +748,4 @@ ] } } + From f8134ab74e63d000938cdcc91dbb498909bee765 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:48:53 +0300 Subject: [PATCH 0991/1179] Update CHANGELOG.json --- external/CHANGELOG.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/external/CHANGELOG.json b/external/CHANGELOG.json index 3a70bf046bf..ad4a6e376d7 100644 --- a/external/CHANGELOG.json +++ b/external/CHANGELOG.json @@ -13,7 +13,7 @@ "Added `$addMentionableSelect[]`", "Added `$getMentionableSelectUserID[]`", "Added `$getMentionableSelectUserIDs[]`", - "Added `$getMentionableSelectUserCount`", + "Added `$getMentionableSelectUserCount`" ] }, "2025": { @@ -749,3 +749,4 @@ } } + From 3cd061d29831d83c208f7991a35cf08dd705bdcf Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:11:53 +0300 Subject: [PATCH 0992/1179] Update SUMMARY.md --- src/SUMMARY.md | 868 +++++++++++++++++++++++++------------------------ 1 file changed, 448 insertions(+), 420 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 1b1d0df0684..3315cd07732 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -64,426 +64,454 @@ - [Functions]() - [Introduction](./bdscript/introduction.md) - - [$addButton](./bdscript/addButton.md) - - [$addCmdReactions](./bdscript/addCmdReactions.md) - - [$addContainer](./bdscript/addContainer.md) - - [$addEmoji](./bdscript/addEmoji.md) - - [$addField](./bdscript/addField.md) - - [$addMessageReactions](./bdscript/addMessageReactions.md) - - [$addReactions](./bdscript/addReactions.md) - - [$addSection](./bdscript/addSection.md) - - [$addSelectMenuOption](./bdscript/addSelectMenuOption.md) - - [$addSeparator](./bdscript/addSeparator.md) - - [$addTextDisplay](./bdscript/addTextDisplay.md) - - [$addTextInput](./bdscript/addTextInput.md) - - [$addThumbnail](./bdscript/addThumbnail.md) - - [$addTimestamp](./bdscript/addTimestamp.md) - - [$addTimestamp[]](./bdscript/addTimestampComplex.md) - - [$afkChannelID](./bdscript/afkChannelID.md) - - [$afkTimeout](./bdscript/afkTimeout.md) - - [$allMembersCount](./bdscript/allMembersCount.md) - - [$allowMention](./bdscript/allowMention.md) - - [$allowRoleMentions](./bdscript/allowRoleMentions.md) - - [$allowUserMentions](./bdscript/allowUserMentions.md) - - [$alternativeParsing](./bdscript/alternativeParsing.md) - - [$and](./bdscript/and.md) - - [$argCount](./bdscript/argCount.md) - - [$argsCheck](./bdscript/argsCheck.md) - - [$author](./bdscript/author.md) - - [$authorAvatar](./bdscript/authorAvatar.md) - - [$authorIcon](./bdscript/authorIcon.md) - - [$authorID](./bdscript/authorID.md) - - [$authorOfMessage](./bdscript/authorOfMessage.md) - - [$authorURL](./bdscript/authorURL.md) - - [$awaitFunc](./bdscript/awaitFunc.md) - - [$ban](./bdscript/ban.md) - - [$ban[]](./bdscript/banComplex.md) - - [$banID](./bdscript/banID.md) - - [$banID[]](./bdscript/banIDComplex.md) - - [$blackListIDs](./bdscript/blackListIDs.md) - - [$blackListRoles](./bdscript/blackListRoles.md) - - [$blackListRolesIDs](./bdscript/blackListRolesIDs.md) - - [$blackListServers](./bdscript/blackListServers.md) - - [$blackListUsers](./bdscript/blackListUsers.md) - - [$boostCount](./bdscript/boostCount.md) - - [$boostCount[]](./bdscript/boostCountComplex.md) - - [$boostLevel](./bdscript/boostLevel.md) - - [$botCommands](./bdscript/botCommands.md) - - [$botID](./bdscript/botID.md) - - [$botLeave](./bdscript/botLeave.md) - - [$botLeave[]](./bdscript/botLeaveComplex.md) - - [$botListDescription](./bdscript/botListDescription.md) - - [$botListHide](./bdscript/botListHide.md) - - [$botNode](./bdscript/botNode.md) - - [$botOwnerID](./bdscript/botOwnerID.md) - - [$botTyping](./bdscript/botTyping.md) - - [$byteCount](./bdscript/byteCount.md) - - [$c](./bdscript/c.md) - - [$calculate](./bdscript/calculate.md) - - [$catch](./bdscript/catch.md) - - [$categoryChannels](./bdscript/categoryChannels.md) - - [$categoryCount](./bdscript/categoryCount.md) - - [$categoryCount[]](./bdscript/categoryCountComplex.md) - - [$categoryID](./bdscript/categoryID.md) - - [$ceil](./bdscript/ceil.md) - - [$changeCooldownTime](./bdscript/changeCooldownTime.md) - - [$changeUsername](./bdscript/changeUsername.md) - - [$changeUsernameWithID](./bdscript/changeUsernameWithID.md) - - [$channelCount](./bdscript/channelCount.md) - - [$channelExists](./bdscript/channelExists.md) - - [$channelID](./bdscript/channelID.md) - - [$channelID[]](./bdscript/channelIDComplex.md) - - [$channelIDFromName](./bdscript/channelIDFromName.md) - - [$channelName](./bdscript/channelName.md) - - [$channelNames](./bdscript/channelNames.md) - - [$channelPosition](./bdscript/channelPosition.md) - - [$channelPosition[]](./bdscript/channelPositionComplex.md) - - [$channelSendMessage](./bdscript/channelSendMessage.md) - - [$channelTopic](./bdscript/channelTopic.md) - - [$channelTopic[]](./bdscript/channelTopicComplex.md) - - [$channelType](./bdscript/channelType.md) - - [$charCount](./bdscript/charCount.md) - - [$checkCondition](./bdscript/checkCondition.md) - - [$checkContains](./bdscript/checkContains.md) - - [$checkUserPerms](./bdscript/checkUserPerms.md) - - [$clear](./bdscript/clear.md) - - [$clear[]](./bdscript/clearComplex.md) - - [$clearReactions](./bdscript/clearReactions.md) - - [$closeTicket](./bdscript/closeTicket.md) - - [$color](./bdscript/color.md) - - [$colorRole](./bdscript/colorRole.md) - - [$commandFolder](./bdscript/commandFolder.md) - - [$commandName](./bdscript/commandName.md) - - [$commandTrigger](./bdscript/commandTrigger.md) - - [$commandsCount](./bdscript/commandsCount.md) - - [$cooldown](./bdscript/cooldown.md) - - [$createChannel](./bdscript/createChannel.md) - - [$createRole](./bdscript/createRole.md) - - [$creationDate](./bdscript/creationDate.md) - - [$cropText](./bdscript/cropText.md) - - [$customEmoji](./bdscript/customEmoji.md) - - [$customID](./bdscript/customID.md) - - [$date](./bdscript/date.md) - - [$day](./bdscript/day.md) - - [$defer](./bdscript/defer.md) - - [$deleteChannels](./bdscript/deleteChannels.md) - - [$deleteChannelsByName](./bdscript/deleteChannelsByName.md) - - [$deletecommand](./bdscript/deletecommand.md) - - [$deleteIn](./bdscript/deleteIn.md) - - [$deleteMessage](./bdscript/deleteMessage.md) - - [$deleteRole](./bdscript/deleteRole.md) - - [$description](./bdscript/description.md) - - [$disableInnerSpaceRemoval](./bdscript/disableInnerSpaceRemoval.md) - - [$disableSpecialEscaping](./bdscript/disableSpecialEscaping.md) - - [$discriminator](./bdscript/discriminator.md) - - [$displayName](./bdscript/displayName.md) - - [$displayName[]](./bdscript/displayNameComplex.md) - - [$divide](./bdscript/divide.md) - - [$dm](./bdscript/dm.md) - - [$dm[]](./bdscript/dmComplex.md) - - [$dmChannelID](./bdscript/dmChannelID.md) - - [$editButton](./bdscript/editButton.md) - - [$editChannelPerms](./bdscript/editChannelPerms.md) - - [$editEmbedIn](./bdscript/editEmbedIn.md) - - [$editIn](./bdscript/editIn.md) - - [$editMessage](./bdscript/editMessage.md) - - [$editSelectMenu](./bdscript/editSelectMenu.md) - - [$editSelectMenuOption](./bdscript/editSelectMenuOption.md) - - [$editSplitText](./bdscript/editSplitText.md) - - [$editThread](./bdscript/editThread.md) - - [$else](./bdscript/else.md) - - [$elseif](./bdscript/elseif.md) - - [$embeddedURL](./bdscript/embeddedURL.md) - - [$embedSuppressErrors](./bdscript/embedSuppressErrors.md) - - [$emojiExists](./bdscript/emojiExists.md) - - [$emojiName](./bdscript/emojiName.md) - - [$emoteCount](./bdscript/emoteCount.md) - - [$enabled](./bdscript/enabled.md) - - [$enableDecimals](./bdscript/enableDecimals.md) - - [$endif](./bdscript/endif.md) - - [$endtry](./bdscript/endtry.md) - - [$ephemeral](./bdscript/ephemeral.md) - - [$error](./bdscript/error.md) - - [$eval](./bdscript/eval.md) - - [$executionTime](./bdscript/executionTime.md) - - [$findChannel](./bdscript/findChannel.md) - - [$findRole](./bdscript/findRole.md) - - [$findUser](./bdscript/findUser.md) - - [$floor](./bdscript/floor.md) - - [$footer](./bdscript/footer.md) - - [$footerIcon](./bdscript/footerIcon.md) - - [$getAttachments](./bdscript/getAttachments.md) - - [$getBanReason](./bdscript/getBanReason.md) - - [$getBotInvite](./bdscript/getBotInvite.md) - - [$getChannelVar](./bdscript/getChannelVar.md) - - [$getCooldown](./bdscript/getCooldown.md) - - [$getCustomStatus](./bdscript/getCustomStatus.md) - - [$getEmbedData](./bdscript/getEmbedData.md) - - [$getInviteInfo](./bdscript/getInviteInfo.md) - - [$getLeaderboardPosition](./bdscript/getLeaderboardPosition.md) - - [$getLeaderboardValue](./bdscript/getLeaderboardValue.md) - - [$getMessage](./bdscript/getMessage.md) - - [$getReactions](./bdscript/getReactions.md) - - [$getRoleColor](./bdscript/getRoleColor.md) - - [$getServerInvite](./bdscript/getServerInvite.md) - - [$getServerInvite[]](./bdscript/getServerInviteComplex.md) - - [$getServerVar](./bdscript/getServerVar.md) - - [$getSlowmode](./bdscript/getSlowmode.md) - - [$getTextSplitIndex](./bdscript/getTextSplitIndex.md) - - [$getTextSplitLength](./bdscript/getTextSplitLength.md) - - [$getTimestamp](./bdscript/getTimestamp.md) - - [$getTimestamp[]](./bdscript/getTimestampComplex.md) - - [$getUserStatus](./bdscript/getUserStatus.md) - - [$getUserVar](./bdscript/getUserVar.md) - - [$getVar](./bdscript/getVar.md) - - [$giveRole](./bdscript/giveRole.md) - - [$globalCooldown](./bdscript/globalCooldown.md) - - [$globalUserLeaderboard](./bdscript/globalUserLeaderboard.md) - - [$guildBanner](./bdscript/guildBanner.md) - - [$guildExists](./bdscript/guildExists.md) - - [$guildID](./bdscript/guildID.md) - - [$guildID[]](./bdscript/guildIDComplex.md) - - [$hasRole](./bdscript/hasRole.md) - - [$highestRole](./bdscript/highestRole.md) - - [$highestRole[]](./bdscript/highestRoleComplex.md) - - [$highestRoleWithPerms](./bdscript/highestRoleWithPerms.md) - - [$hostingExpireTime](./bdscript/hostingExpireTime.md) - - [$hostingExpireTime[]](./bdscript/hostingExpireTimeComplex.md) - - [$hour](./bdscript/hour.md) - - [$hypesquad](./bdscript/hypesquad.md) - - [$if](./bdscript/if.md) - - [$ignoreChannels](./bdscript/ignoreChannels.md) - - [$ignoreLinks](./bdscript/ignoreLinks.md) - - [$image](./bdscript/image.md) - - [$input](./bdscript/input.md) - - [$isAdmin](./bdscript/isAdmin.md) - - [$isBanned](./bdscript/isBanned.md) - - [$isBoolean](./bdscript/isBoolean.md) - - [$isBooster](./bdscript/isBooster.md) - - [$isBot](./bdscript/isBot.md) - - [$isEmojiAnimated](./bdscript/isEmojiAnimated.md) - - [$isHoisted](./bdscript/isHoisted.md) - - [$isInteger](./bdscript/isInteger.md) - - [$isMentionable](./bdscript/isMentionable.md) - - [$isMentioned](./bdscript/isMentioned.md) - - [$isMessageEdited](./bdscript/isMessageEdited.md) - - [$isNSFW](./bdscript/isNSFW.md) - - [$isNumber](./bdscript/isNumber.md) - - [$isSlash](./bdscript/isSlash.md) - - [$isTicket](./bdscript/isTicket.md) - - [$isTimedOut](./bdscript/isTimedOut.md) - - [$isUserDMEnabled](./bdscript/isUserDMEnabled.md) - - [$isValidHex](./bdscript/isValidHex.md) - - [$joinSplitText](./bdscript/joinSplitText.md) - - [$kick](./bdscript/kick.md) - - [$kick[]](./bdscript/kickComplex.md) - - [$kickMention](./bdscript/kickMention.md) - - [$lastMessageID](./bdscript/lastMessageID.md) - - [$lastPinTimestamp](./bdscript/lastPinTimestamp.md) - - [$linesCount](./bdscript/linesCount.md) - - [$lowestRole](./bdscript/lowestRole.md) - - [$lowestRole[]](./bdscript/lowestRoleComplex.md) - - [$lowestRoleWithPerms](./bdscript/lowestRoleWithPerms.md) - - [$max](./bdscript/max.md) - - [$membersCount](./bdscript/membersCount.md) - - [$membersCount[]](./bdscript/membersCountComplex.md) - - [$mentioned](./bdscript/mentioned.md) - - [$mentionedChannels](./bdscript/mentionedChannels.md) - - [$mentionedRoles](./bdscript/mentionedRoles.md) - - [$message](./bdscript/message.md) - - [$message[]](./bdscript/messageComplex.md) - - [$messageEditedTimestamp](./bdscript/messageEditedTimestamp.md) - - [$messageID](./bdscript/messageID.md) - - [$min](./bdscript/min.md) - - [$minute](./bdscript/minute.md) - - [$modifyChannel](./bdscript/modifyChannel.md) - - [$modifyChannelPerms](./bdscript/modifyChannelPerms.md) - - [$modifyRole](./bdscript/modifyRole.md) - - [$modifyRolePerms](./bdscript/modifyRolePerms.md) - - [$modulo](./bdscript/modulo.md) - - [$month](./bdscript/month.md) - - [$multi](./bdscript/multi.md) - - [$mute](./bdscript/mute.md) - - [$newModal](./bdscript/newModal.md) - - [$newSelectMenu](./bdscript/newSelectMenu.md) - - [$newTicket](./bdscript/newTicket.md) - - [$nickname](./bdscript/nickname.md) - - [$nickname[]](./bdscript/nicknameComplex.md) - - [$nomention](./bdscript/nomention.md) - - [$noMentionMessage](./bdscript/noMentionMessage.md) - - [$noMentionMessage[]](./bdscript/noMentionMessageComplex.md) - - [$nodeVersion](./bdscript/nodeVersion.md) - - [$nodeVersion[]](./bdscript/nodeVersionComplex.md) - - [$numberSeparator](./bdscript/numberSeparator.md) - - [$onlyAdmin](./bdscript/onlyAdmin.md) - - [$onlyBotChannelPerms](./bdscript/onlyBotChannelPerms.md) - - [$onlyBotPerms](./bdscript/onlyBotPerms.md) - - [$onlyForCategories](./bdscript/onlyForCategories.md) - - [$onlyForChannels](./bdscript/onlyForChannels.md) - - [$onlyForIDs](./bdscript/onlyForIDs.md) - - [$onlyForRoles](./bdscript/onlyForRoles.md) - - [$onlyForRoleIDs](./bdscript/onlyForRoleIDs.md) - - [$onlyForServers](./bdscript/onlyForServers.md) - - [$onlyForUsers](./bdscript/onlyForUsers.md) - - [$onlyIf](./bdscript/onlyIf.md) - - [$onlyIfMessageContains](./bdscript/onlyIfMessageContains.md) - - [$onlyNSFW](./bdscript/onlyNSFW.md) - - [$onlyPerms](./bdscript/onlyPerms.md) - - [$optOff](./bdscript/optOff.md) - - [$or](./bdscript/or.md) - - [$parentID](./bdscript/parentID.md) - - [$parentID[]](./bdscript/parentIDComplex.md) - - [$ping](./bdscript/ping.md) - - [$pinMessage](./bdscript/pinMessage.md) - - [$pinMessage[]](./bdscript/pinMessageComplex.md) - - [$premiumExpireTime](./bdscript/premiumExpireTime.md) - - [$publishMessage](./bdscript/publishMessage.md) - - [$random](./bdscript/random.md) - - [$random[]](./bdscript/randomComplex.md) - - [$randomCategoryID](./bdscript/randomCategoryID.md) - - [$randomChannelID](./bdscript/randomChannelID.md) - - [$randomGuildID](./bdscript/randomGuildID.md) - - [$randomMention](./bdscript/randomMention.md) - - [$randomRoleID](./bdscript/randomRoleID.md) - - [$randomString](./bdscript/randomString.md) - - [$randomText](./bdscript/randomText.md) - - [$randomUser](./bdscript/randomUser.md) - - [$randomUserID](./bdscript/randomUserID.md) - - [$registerGuildCommands](./bdscript/registerGuildCommands.md) - - [$registerGuildCommands[]](./bdscript/registerGuildCommandsComplex.md) - - [$removeAllComponents](./bdscript/removeAllComponents.md) - - [$removeAllComponents[]](./bdscript/removeAllComponentsComplex.md) - - [$removeButtons](./bdscript/removeButtons.md) - - [$removeButtons[]](./bdscript/removeButtonsComplex.md) - - [$removeComponent](./bdscript/removeComponent.md) - - [$removeContains](./bdscript/removeContains.md) - - [$removeEmoji](./bdscript/removeEmoji.md) - - [$removeLinks](./bdscript/removeLinks.md) - - [$removeLinks[]](./bdscript/removeLinksComplex.md) - - [$removeSplitTextElement](./bdscript/removeSplitTextElement.md) - - [$repeatMessage](./bdscript/repeatMessage.md) - - [$replaceText](./bdscript/replaceText.md) - - [$repliedMessageID](./bdscript/repliedMessageID.md) - - [$repliedMessageID[]](./bdscript/repliedMessageIDComplex.md) - - [$reply](./bdscript/reply.md) - - [$reply[]](./bdscript/replyComplex.md) - - [$replyIn](./bdscript/replyIn.md) - - [$resetChannelVar](./bdscript/resetChannelVar.md) - - [$resetServerVar](./bdscript/resetServerVar.md) - - [$resetUserVar](./bdscript/resetUserVar.md) - - [$roleCount](./bdscript/roleCount.md) - - [$roleExists](./bdscript/roleExists.md) - - [$roleGrant](./bdscript/roleGrant.md) - - [$roleID](./bdscript/roleID.md) - - [$roleInfo](./bdscript/roleInfo.md) - - [$roleName](./bdscript/roleName.md) - - [$roleNames](./bdscript/roleNames.md) - - [$rolePerms](./bdscript/rolePerms.md) - - [$rolePosition](./bdscript/rolePosition.md) - - [$round](./bdscript/round.md) - - [$rulesChannelID](./bdscript/rulesChannelID.md) - - [$scriptLanguage](./bdscript/scriptLanguage.md) - - [$second](./bdscript/second.md) - - [$sendEmbedMessage](./bdscript/sendEmbedMessage.md) - - [$sendMessage](./bdscript/sendMessage.md) - - [$serverChannelExists](./bdscript/serverChannelExists.md) - - [$serverCooldown](./bdscript/serverCooldown.md) - - [$serverCount](./bdscript/serverCount.md) - - [$serverDescription](./bdscript/serverDescription.md) - - [$serverDescription[]](./bdscript/serverDescriptionComplex.md) - - [$serverEmojis](./bdscript/serverEmojis.md) - - [$serverIcon](./bdscript/serverIcon.md) - - [$serverIcon[]](./bdscript/serverIconComplex.md) - - [$serverInfo](./bdscript/serverInfo.md) - - [$serverLeaderboard](./bdscript/serverLeaderboard.md) - - [$serverName](./bdscript/serverName.md) - - [$serverNames](./bdscript/serverNames.md) - - [$serverNames[]](./bdscript/serverNamesComplex.md) - - [$serverOwner](./bdscript/serverOwner.md) - - [$serverOwner[]](./bdscript/serverOwnerComplex.md) - - [$serverRegion](./bdscript/serverRegion.md) - - [$serverVerificationLvl](./bdscript/serverVerificationLvl.md) - - [$setChannelVar](./bdscript/setChannelVar.md) - - [$setServerVar](./bdscript/setServerVar.md) - - [$setUserRoles](./bdscript/setUserRoles.md) - - [$setUserVar](./bdscript/setUserVar.md) - - [$setVar](./bdscript/setVar.md) - - [$shardID](./bdscript/shardID.md) - - [$shardID[]](./bdscript/shardIDComplex.md) - - [$slashCommandsCount](./bdscript/slashCommandsCount.md) - - [$slashID](./bdscript/slashID.md) - - [$slashID[]](./bdscript/slashIDComplex.md) - - [$slowmode](./bdscript/slowmode.md) - - [$sort](./bdscript/sort.md) - - [$splitText](./bdscript/splitText.md) - - [$sqrt](./bdscript/sqrt.md) - - [$startThread](./bdscript/startThread.md) - - [$stop](./bdscript/stop.md) - - [$sub](./bdscript/sub.md) - - [$sum](./bdscript/sum.md) - - [$suppressErrors](./bdscript/suppressErrors.md) - - [$suppressErrors[]](./bdscript/suppressErrorsComplex.md) - - [$systemChannelID](./bdscript/systemChannelID.md) - - [$takeRole](./bdscript/takeRole.md) - - [$textSplit](./bdscript/textSplit.md) - - [$threadAddMember](./bdscript/threadAddMember.md) - - [$threadMessageCount](./bdscript/threadMessageCount.md) - - [$threadRemoveMember](./bdscript/threadRemoveMember.md) - - [$threadUserCount](./bdscript/threadUserCount.md) - - [$thumbnail](./bdscript/thumbnail.md) - - [$time](./bdscript/time.md) - - [$timeout](./bdscript/timeout.md) - - [$title](./bdscript/title.md) - - [$toLowercase](./bdscript/toLowercase.md) - - [$toTitleCase](./bdscript/toTitleCase.md) - - [$toUppercase](./bdscript/toUppercase.md) - - [$trimContent](./bdscript/trimContent.md) - - [$trimSpace](./bdscript/trimSpace.md) - - [$try](./bdscript/try.md) - - [$tts](./bdscript/tts.md) - - [$unban](./bdscript/unban.md) - - [$unbanID](./bdscript/unbanID.md) - - [$unbanID[]](./bdscript/unbanIDComplex.md) - - [$unescape](./bdscript/unescape.md) - - [$unmute](./bdscript/unmute.md) - - [$unpinMessage](./bdscript/unpinMessage.md) - - [$unregisterGuildCommands](./bdscript/unregisterGuildCommands.md) - - [$unregisterGuildCommands[]](./bdscript/unregisterGuildCommandsComplex.md) - - [$untimeout](./bdscript/untimeout.md) - - [$uptime](./bdscript/uptime.md) - - [$url](./bdscript/url.md) - - [$useChannel](./bdscript/useChannel.md) - - [$userAvatar](./bdscript/userAvatar.md) - - [$userBadges](./bdscript/userBadges.md) - - [$userBanner](./bdscript/userBanner.md) - - [$userBannerColor](./bdscript/userBannerColor.md) - - [$userExists](./bdscript/userExists.md) - - [$userID](./bdscript/userID.md) - - [$userInfo](./bdscript/userInfo.md) - - [$userJoined](./bdscript/userJoined.md) - - [$userJoinedDiscord](./bdscript/userJoinedDiscord.md) - - [$userLeaderboard](./bdscript/userLeaderboard.md) - - [$username](./bdscript/username.md) - - [$username[]](./bdscript/usernameComplex.md) - - [$userPerms](./bdscript/userPerms.md) - - [$userReacted](./bdscript/userReacted.md) - - [$userRoles](./bdscript/userRoles.md) - - [$userServerAvatar](./bdscript/userServerAvatar.md) - - [$var](./bdscript/var.md) - - [$varExistError](./bdscript/varExistError.md) - - [$varExists](./bdscript/varExists.md) - - [$variablesCount](./bdscript/variablesCount.md) - - [$voiceUserLimit](./bdscript/voiceUserLimit.md) - - [$webhookAvatarURL](./bdscript/webhookAvatarURL.md) - - [$webhookColor](./bdscript/webhookColor.md) - - [$webhookCreate](./bdscript/webhookCreate.md) - - [$webhookDelete](./bdscript/webhookDelete.md) - - [$webhookDescription](./bdscript/webhookDescription.md) - - [$webhookFooter](./bdscript/webhookFooter.md) - - [$webhookSend](./bdscript/webhookSend.md) - - [$webhookTitle](./bdscript/webhookTitle.md) - - [$webhookUsername](./bdscript/webhookUsername.md) - - [$year](./bdscript/year.md) + - [Components]() + - [$addButton](./bdscript/addButton.md) + - [$addSelectMenuOption](./bdscript/addSelectMenuOption.md) + - [$addSeparator](./bdscript/addSeparator.md) + - [$addTextDisplay](./bdscript/addTextDisplay.md) + - [$addTextInput](./bdscript/addTextInput.md) + - [$editButton](./bdscript/editButton.md) + - [$editSelectMenu](./bdscript/editSelectMenu.md) + - [$editSelectMenuOption](./bdscript/editSelectMenuOption.md) + - [$newModal](./bdscript/newModal.md) + - [$newSelectMenu](./bdscript/newSelectMenu.md) + - [$removeAllComponents](./bdscript/removeAllComponents.md) + - [$removeAllComponents[]](./bdscript/removeAllComponentsComplex.md) + - [$removeButtons](./bdscript/removeButtons.md) + - [$removeButtons[]](./bdscript/removeButtonsComplex.md) + - [$removeComponent](./bdscript/removeComponent.md) + - [Embeds]() + - [$addContainer](./bdscript/addContainer.md) + - [$addEmoji](./bdscript/addEmoji.md) + - [$addField](./bdscript/addField.md) + - [$addSection](./bdscript/addSection.md) + - [$addThumbnail](./bdscript/addThumbnail.md) + - [$addTimestamp](./bdscript/addTimestamp.md) + - [$addTimestamp[]](./bdscript/addTimestampComplex.md) + - [$authorIcon](./bdscript/authorIcon.md) + - [$authorURL](./bdscript/authorURL.md) + - [$color](./bdscript/color.md) + - [$description](./bdscript/description.md) + - [$embeddedURL](./bdscript/embeddedURL.md) + - [$embedSuppressErrors](./bdscript/embedSuppressErrors.md) + - [$footer](./bdscript/footer.md) + - [$footerIcon](./bdscript/footerIcon.md) + - [$image](./bdscript/image.md) + - [$thumbnail](./bdscript/thumbnail.md) + - [$title](./bdscript/title.md) + - [Reactions]() + - [$addCmdReactions](./bdscript/addCmdReactions.md) + - [$addMessageReactions](./bdscript/addMessageReactions.md) + - [$addReactions](./bdscript/addReactions.md) + - [$awaitFunc](./bdscript/awaitFunc.md) + - [$clearReactions](./bdscript/clearReactions.md) + - [$getReactions](./bdscript/getReactions.md) + - [$publishMessage](./bdscript/publishMessage.md) + - [$userReacted](./bdscript/userReacted.md) + - [User]() + - [$author](./bdscript/author.md) + - [$authorAvatar](./bdscript/authorAvatar.md) + - [$authorID](./bdscript/authorID.md) + - [$authorOfMessage](./bdscript/authorOfMessage.md) + - [$creationDate](./bdscript/creationDate.md) + - [$discriminator](./bdscript/discriminator.md) + - [$displayName](./bdscript/displayName.md) + - [$displayName[]](./bdscript/displayNameComplex.md) + - [$isAdmin](./bdscript/isAdmin.md) + - [$isBooster](./bdscript/isBooster.md) + - [$isBot](./bdscript/isBot.md) + - [$nickname](./bdscript/nickname.md) + - [$nickname[]](./bdscript/nicknameComplex.md) + - [$userAvatar](./bdscript/userAvatar.md) + - [$userBadges](./bdscript/userBadges.md) + - [$userBanner](./bdscript/userBanner.md) + - [$userBannerColor](./bdscript/userBannerColor.md) + - [$userExists](./bdscript/userExists.md) + - [$userID](./bdscript/userID.md) + - [$userInfo](./bdscript/userInfo.md) + - [$userJoined](./bdscript/userJoined.md) + - [$userJoinedDiscord](./bdscript/userJoinedDiscord.md) + - [$username](./bdscript/username.md) + - [$username[]](./bdscript/usernameComplex.md) + - [$userPerms](./bdscript/userPerms.md) + - [$userServerAvatar](./bdscript/userServerAvatar.md) + - [Moderation]() + - [$ban](./bdscript/ban.md) + - [$ban[]](./bdscript/banComplex.md) + - [$banID](./bdscript/banID.md) + - [$banID[]](./bdscript/banIDComplex.md) + - [$checkUserPerms](./bdscript/checkUserPerms.md) + - [$clear](./bdscript/clear.md) + - [$clear[]](./bdscript/clearComplex.md) + - [$closeTicket](./bdscript/closeTicket.md) + - [$getBanReason](./bdscript/getBanReason.md) + - [$isBanned](./bdscript/isBanned.md) + - [$isTimedOut](./bdscript/isTimedOut.md) + - [$kick](./bdscript/kick.md) + - [$kick[]](./bdscript/kickComplex.md) + - [$kickMention](./bdscript/kickMention.md) + - [$mute](./bdscript/mute.md) + - [$timeout](./bdscript/timeout.md) + - [$unban](./bdscript/unban.md) + - [$unbanID](./bdscript/unbanID.md) + - [$unbanID[]](./bdscript/unbanIDComplex.md) + - [$unmute](./bdscript/unmute.md) + - [$untimeout](./bdscript/untimeout.md) + - [Channels]() + - [$afkChannelID](./bdscript/afkChannelID.md) + - [$categoryChannels](./bdscript/categoryChannels.md) + - [$categoryCount](./bdscript/categoryCount.md) + - [$categoryCount[]](./bdscript/categoryCountComplex.md) + - [$categoryID](./bdscript/categoryID.md) + - [$channelCount](./bdscript/channelCount.md) + - [$channelExists](./bdscript/channelExists.md) + - [$channelID](./bdscript/channelID.md) + - [$channelID[]](./bdscript/channelIDComplex.md) + - [$channelIDFromName](./bdscript/channelIDFromName.md) + - [$channelName](./bdscript/channelName.md) + - [$channelNames](./bdscript/channelNames.md) + - [$channelPosition](./bdscript/channelPosition.md) + - [$channelPosition[]](./bdscript/channelPositionComplex.md) + - [$channelSendMessage](./bdscript/channelSendMessage.md) + - [$channelTopic](./bdscript/channelTopic.md) + - [$channelTopic[]](./bdscript/channelTopicComplex.md) + - [$channelType](./bdscript/channelType.md) + - [$createChannel](./bdscript/createChannel.md) + - [$deleteChannels](./bdscript/deleteChannels.md) + - [$deleteChannelsByName](./bdscript/deleteChannelsByName.md) + - [$dmChannelID](./bdscript/dmChannelID.md) + - [$editChannelPerms](./bdscript/editChannelPerms.md) + - [$findChannel](./bdscript/findChannel.md) + - [$getSlowmode](./bdscript/getSlowmode.md) + - [$isNSFW](./bdscript/isNSFW.md) + - [$lastMessageID](./bdscript/lastMessageID.md) + - [$lastPinTimestamp](./bdscript/lastPinTimestamp.md) + - [$mentionedChannels](./bdscript/mentionedChannels.md) + - [$modifyChannel](./bdscript/modifyChannel.md) + - [$modifyChannelPerms](./bdscript/modifyChannelPerms.md) + - [$parentID](./bdscript/parentID.md) + - [$parentID[]](./bdscript/parentIDComplex.md) + - [$rulesChannelID](./bdscript/rulesChannelID.md) + - [$serverChannelExists](./bdscript/serverChannelExists.md) + - [$slowmode](./bdscript/slowmode.md) + - [$systemChannelID](./bdscript/systemChannelID.md) + - [$useChannel](./bdscript/useChannel.md) + - [$voiceUserLimit](./bdscript/voiceUserLimit.md) + - [Roles]() + - [$allowRoleMentions](./bdscript/allowRoleMentions.md) + - [$colorRole](./bdscript/colorRole.md) + - [$createRole](./bdscript/createRole.md) + - [$deleteRole](./bdscript/deleteRole.md) + - [$findRole](./bdscript/findRole.md) + - [$getRoleColor](./bdscript/getRoleColor.md) + - [$giveRole](./bdscript/giveRole.md) + - [$hasRole](./bdscript/hasRole.md) + - [$highestRole](./bdscript/highestRole.md) + - [$highestRole[]](./bdscript/highestRoleComplex.md) + - [$highestRoleWithPerms](./bdscript/highestRoleWithPerms.md) + - [$isHoisted](./bdscript/isHoisted.md) + - [$isMentionable](./bdscript/isMentionable.md) + - [$lowestRole](./bdscript/lowestRole.md) + - [$lowestRole[]](./bdscript/lowestRoleComplex.md) + - [$lowestRoleWithPerms](./bdscript/lowestRoleWithPerms.md) + - [$mentionedRoles](./bdscript/mentionedRoles.md) + - [$modifyRole](./bdscript/modifyRole.md) + - [$modifyRolePerms](./bdscript/modifyRolePerms.md) + - [$roleCount](./bdscript/roleCount.md) + - [$roleExists](./bdscript/roleExists.md) + - [$roleGrant](./bdscript/roleGrant.md) + - [$roleID](./bdscript/roleID.md) + - [$roleInfo](./bdscript/roleInfo.md) + - [$roleName](./bdscript/roleName.md) + - [$roleNames](./bdscript/roleNames.md) + - [$rolePerms](./bdscript/rolePerms.md) + - [$rolePosition](./bdscript/rolePosition.md) + - [$setUserRoles](./bdscript/setUserRoles.md) + - [$takeRole](./bdscript/takeRole.md) + - [$userRoles](./bdscript/userRoles.md) + - [Bot]() + - [$botCommands](./bdscript/botCommands.md) + - [$botID](./bdscript/botID.md) + - [$botLeave](./bdscript/botLeave.md) + - [$botLeave[]](./bdscript/botLeaveComplex.md) + - [$botListDescription](./bdscript/botListDescription.md) + - [$botListHide](./bdscript/botListHide.md) + - [$botNode](./bdscript/botNode.md) + - [$botOwnerID](./bdscript/botOwnerID.md) + - [$botTyping](./bdscript/botTyping.md) + - [$commandFolder](./bdscript/commandFolder.md) + - [$commandName](./bdscript/commandName.md) + - [$commandTrigger](./bdscript/commandTrigger.md) + - [$commandsCount](./bdscript/commandsCount.md) + - [$customID](./bdscript/customID.md) + - [$deletecommand](./bdscript/deletecommand.md) + - [$enabled](./bdscript/enabled.md) + - [$getBotInvite](./bdscript/getBotInvite.md) + - [$nodeVersion](./bdscript/nodeVersion.md) + - [$nodeVersion[]](./bdscript/nodeVersionComplex.md) + - [$ping](./bdscript/ping.md) + - [$registerGuildCommands](./bdscript/registerGuildCommands.md) + - [$registerGuildCommands[]](./bdscript/registerGuildCommandsComplex.md) + - [$scriptLanguage](./bdscript/scriptLanguage.md) + - [$shardID](./bdscript/shardID.md) + - [$shardID[]](./bdscript/shardIDComplex.md) + - [$slashCommandsCount](./bdscript/slashCommandsCount.md) + - [$slashID](./bdscript/slashID.md) + - [$slashID[]](./bdscript/slashIDComplex.md) + - [$unregisterGuildCommands](./bdscript/unregisterGuildCommands.md) + - [$unregisterGuildCommands[]](./bdscript/unregisterGuildCommandsComplex.md) + - [$uptime](./bdscript/uptime.md) + - [Server]() + - [$afkTimeout](./bdscript/afkTimeout.md) + - [$allMembersCount](./bdscript/allMembersCount.md) + - [$boostCount](./bdscript/boostCount.md) + - [$boostCount[]](./bdscript/boostCountComplex.md) + - [$boostLevel](./bdscript/boostLevel.md) + - [$getServerInvite](./bdscript/getServerInvite.md) + - [$getServerInvite[]](./bdscript/getServerInviteComplex.md) + - [$guildBanner](./bdscript/guildBanner.md) + - [$guildExists](./bdscript/guildExists.md) + - [$guildID](./bdscript/guildID.md) + - [$guildID[]](./bdscript/guildIDComplex.md) + - [$hypesquad](./bdscript/hypesquad.md) + - [$membersCount](./bdscript/membersCount.md) + - [$membersCount[]](./bdscript/membersCountComplex.md) + - [$serverCount](./bdscript/serverCount.md) + - [$serverDescription](./bdscript/serverDescription.md) + - [$serverDescription[]](./bdscript/serverDescriptionComplex.md) + - [$serverEmojis](./bdscript/serverEmojis.md) + - [$serverIcon](./bdscript/serverIcon.md) + - [$serverIcon[]](./bdscript/serverIconComplex.md) + - [$serverInfo](./bdscript/serverInfo.md) + - [$serverName](./bdscript/serverName.md) + - [$serverNames](./bdscript/serverNames.md) + - [$serverNames[]](./bdscript/serverNamesComplex.md) + - [$serverOwner](./bdscript/serverOwner.md) + - [$serverOwner[]](./bdscript/serverOwnerComplex.md) + - [$serverRegion](./bdscript/serverRegion.md) + - [$serverVerificationLvl](./bdscript/serverVerificationLvl.md) + - [Blacklists]() + - [$blackListIDs](./bdscript/blackListIDs.md) + - [$blackListRoles](./bdscript/blackListRoles.md) + - [$blackListRolesIDs](./bdscript/blackListRolesIDs.md) + - [$blackListServers](./bdscript/blackListServers.md) + - [$blackListUsers](./bdscript/blackListUsers.md) + - [Mentions]() + - [$allowMention](./bdscript/allowMention.md) + - [$allowUserMentions](./bdscript/allowUserMentions.md) + - [$isMentioned](./bdscript/isMentioned.md) + - [$mentioned](./bdscript/mentioned.md) + - [$nomention](./bdscript/nomention.md) + - [Arguments & Conditions]() + - [$argCount](./bdscript/argCount.md) + - [$argsCheck](./bdscript/argsCheck.md) + - [$and](./bdscript/and.md) + - [$checkCondition](./bdscript/checkCondition.md) + - [$checkContains](./bdscript/checkContains.md) + - [$else](./bdscript/else.md) + - [$elseif](./bdscript/elseif.md) + - [$endif](./bdscript/endif.md) + - [$if](./bdscript/if.md) + - [$isBoolean](./bdscript/isBoolean.md) + - [$isInteger](./bdscript/isInteger.md) + - [$isNumber](./bdscript/isNumber.md) + - [$isSlash](./bdscript/isSlash.md) + - [$isValidHex](./bdscript/isValidHex.md) + - [$or](./bdscript/or.md) + - [Text]() + - [$alternativeParsing](./bdscript/alternativeParsing.md) + - [$byteCount](./bdscript/byteCount.md) + - [$c](./bdscript/c.md) + - [$charCount](./bdscript/charCount.md) + - [$cropText](./bdscript/cropText.md) + - [$disableInnerSpaceRemoval](./bdscript/disableInnerSpaceRemoval.md) + - [$disableSpecialEscaping](./bdscript/disableSpecialEscaping.md) + - [$editSplitText](./bdscript/editSplitText.md) + - [$emoteCount](./bdscript/emoteCount.md) + - [$enableDecimals](./bdscript/enableDecimals.md) + - [$getTextSplitIndex](./bdscript/getTextSplitIndex.md) + - [$getTextSplitLength](./bdscript/getTextSplitLength.md) + - [$joinSplitText](./bdscript/joinSplitText.md) + - [$linesCount](./bdscript/linesCount.md) + - [$message](./bdscript/message.md) + - [$message[]](./bdscript/messageComplex.md) + - [$noMentionMessage](./bdscript/noMentionMessage.md) + - [$noMentionMessage[]](./bdscript/noMentionMessageComplex.md) + - [$numberSeparator](./bdscript/numberSeparator.md) + - [$removeContains](./bdscript/removeContains.md) + - [$removeLinks](./bdscript/removeLinks.md) + - [$removeLinks[]](./bdscript/removeLinksComplex.md) + - [$removeSplitTextElement](./bdscript/removeSplitTextElement.md) + - [$repeatMessage](./bdscript/repeatMessage.md) + - [$replaceText](./bdscript/replaceText.md) + - [$splitText](./bdscript/splitText.md) + - [$textSplit](./bdscript/textSplit.md) + - [$toLowercase](./bdscript/toLowercase.md) + - [$toTitleCase](./bdscript/toTitleCase.md) + - [$toUppercase](./bdscript/toUppercase.md) + - [$trimContent](./bdscript/trimContent.md) + - [$trimSpace](./bdscript/trimSpace.md) + - [$unescape](./bdscript/unescape.md) + - [Mathematics]() + - [$calculate](./bdscript/calculate.md) + - [$ceil](./bdscript/ceil.md) + - [$divide](./bdscript/divide.md) + - [$floor](./bdscript/floor.md) + - [$max](./bdscript/max.md) + - [$min](./bdscript/min.md) + - [$modulo](./bdscript/modulo.md) + - [$multi](./bdscript/multi.md) + - [$random](./bdscript/random.md) + - [$random[]](./bdscript/randomComplex.md) + - [$randomCategoryID](./bdscript/randomCategoryID.md) + - [$randomChannelID](./bdscript/randomChannelID.md) + - [$randomGuildID](./bdscript/randomGuildID.md) + - [$randomMention](./bdscript/randomMention.md) + - [$randomRoleID](./bdscript/randomRoleID.md) + - [$randomString](./bdscript/randomString.md) + - [$randomText](./bdscript/randomText.md) + - [$randomUser](./bdscript/randomUser.md) + - [$randomUserID](./bdscript/randomUserID.md) + - [$round](./bdscript/round.md) + - [$sqrt](./bdscript/sqrt.md) + - [$sub](./bdscript/sub.md) + - [$sum](./bdscript/sum.md) + - [Time]() + - [$date](./bdscript/date.md) + - [$day](./bdscript/day.md) + - [$getTimestamp](./bdscript/getTimestamp.md) + - [$getTimestamp[]](./bdscript/getTimestampComplex.md) + - [$hour](./bdscript/hour.md) + - [$hostingExpireTime](./bdscript/hostingExpireTime.md) + - [$hostingExpireTime[]](./bdscript/hostingExpireTimeComplex.md) + - [$messageEditedTimestamp](./bdscript/messageEditedTimestamp.md) + - [$minute](./bdscript/minute.md) + - [$month](./bdscript/month.md) + - [$premiumExpireTime](./bdscript/premiumExpireTime.md) + - [$second](./bdscript/second.md) + - [$time](./bdscript/time.md) + - [$year](./bdscript/year.md) + - [Cooldowns]() + - [$changeCooldownTime](./bdscript/changeCooldownTime.md) + - [$cooldown](./bdscript/cooldown.md) + - [$getCooldown](./bdscript/getCooldown.md) + - [$globalCooldown](./bdscript/globalCooldown.md) + - [$serverCooldown](./bdscript/serverCooldown.md) + - [Message Management]() + - [$channelSendMessage](./bdscript/channelSendMessage.md) + - [$deleteIn](./bdscript/deleteIn.md) + - [$deleteMessage](./bdscript/deleteMessage.md) + - [$dm](./bdscript/dm.md) + - [$dm[]](./bdscript/dmComplex.md) + - [$editEmbedIn](./bdscript/editEmbedIn.md) + - [$editIn](./bdscript/editIn.md) + - [$editMessage](./bdscript/editMessage.md) + - [$ephemeral](./bdscript/ephemeral.md) + - [$getAttachments](./bdscript/getAttachments.md) + - [$getCustomStatus](./bdscript/getCustomStatus.md) + - [$getEmbedData](./bdscript/getEmbedData.md) + - [$getMessage](./bdscript/getMessage.md) + - [$isMessageEdited](./bdscript/isMessageEdited.md) + - [$isUserDMEnabled](./bdscript/isUserDMEnabled.md) + - [$messageID](./bdscript/messageID.md) + - [$pinMessage](./bdscript/pinMessage.md) + - [$pinMessage[]](./bdscript/pinMessageComplex.md) + - [$reply](./bdscript/reply.md) + - [$reply[]](./bdscript/replyComplex.md) + - [$replyIn](./bdscript/replyIn.md) + - [$repliedMessageID](./bdscript/repliedMessageID.md) + - [$repliedMessageID[]](./bdscript/repliedMessageIDComplex.md) + - [$sendEmbedMessage](./bdscript/sendEmbedMessage.md) + - [$sendMessage](./bdscript/sendMessage.md) + - [$unpinMessage](./bdscript/unpinMessage.md) + - [Variables]() + - [$getChannelVar](./bdscript/getChannelVar.md) + - [$getLeaderboardPosition](./bdscript/getLeaderboardPosition.md) + - [$getLeaderboardValue](./bdscript/getLeaderboardValue.md) + - [$getServerVar](./bdscript/getServerVar.md) + - [$getUserVar](./bdscript/getUserVar.md) + - [$getVar](./bdscript/getVar.md) + - [$globalUserLeaderboard](./bdscript/globalUserLeaderboard.md) + - [$resetChannelVar](./bdscript/resetChannelVar.md) + - [$resetServerVar](./bdscript/resetServerVar.md) + - [$resetUserVar](./bdscript/resetUserVar.md) + - [$serverLeaderboard](./bdscript/serverLeaderboard.md) + - [$setChannelVar](./bdscript/setChannelVar.md) + - [$setServerVar](./bdscript/setServerVar.md) + - [$setUserVar](./bdscript/setUserVar.md) + - [$setVar](./bdscript/setVar.md) + - [$userLeaderboard](./bdscript/userLeaderboard.md) + - [$var](./bdscript/var.md) + - [$varExistError](./bdscript/varExistError.md) + - [$varExists](./bdscript/varExists.md) + - [$variablesCount](./bdscript/variablesCount.md) + - [Threads]() + - [$editThread](./bdscript/editThread.md) + - [$startThread](./bdscript/startThread.md) + - [$threadAddMember](./bdscript/threadAddMember.md) + - [$threadMessageCount](./bdscript/threadMessageCount.md) + - [$threadRemoveMember](./bdscript/threadRemoveMember.md) + - [$threadUserCount](./bdscript/threadUserCount.md) + - [Tickets]() + - [$closeTicket](./bdscript/closeTicket.md) + - [$isTicket](./bdscript/isTicket.md) + - [$newTicket](./bdscript/newTicket.md) + - [Emojis]() + - [$customEmoji](./bdscript/customEmoji.md) + - [$emojiExists](./bdscript/emojiExists.md) + - [$emojiName](./bdscript/emojiName.md) + - [$isEmojiAnimated](./bdscript/isEmojiAnimated.md) + - [$removeEmoji](./bdscript/removeEmoji.md) + - [Webhooks]() + - [$webhookAvatarURL](./bdscript/webhookAvatarURL.md) + - [$webhookColor](./bdscript/webhookColor.md) + - [$webhookCreate](./bdscript/webhookCreate.md) + - [$webhookDelete](./bdscript/webhookDelete.md) + - [$webhookDescription](./bdscript/webhookDescription.md) + - [$webhookFooter](./bdscript/webhookFooter.md) + - [$webhookSend](./bdscript/webhookSend.md) + - [$webhookTitle](./bdscript/webhookTitle.md) + - [$webhookUsername](./bdscript/webhookUsername.md) + - [Invites]() + - [$getInviteInfo](./bdscript/getInviteInfo.md) + - [Error Handling]() + - [$catch](./bdscript/catch.md) + - [$endtry](./bdscript/endtry.md) + - [$error](./bdscript/error.md) + - [$suppressErrors](./bdscript/suppressErrors.md) + - [$suppressErrors[]](./bdscript/suppressErrorsComplex.md) + - [$try](./bdscript/try.md) + - [User Status]() + - [$getUserStatus](./bdscript/getUserStatus.md) + - [Execution Control]() + - [$defer](./bdscript/defer.md) + - [$eval](./bdscript/eval.md) + - [$executionTime](./bdscript/executionTime.md) + - [$stop](./bdscript/stop.md) + - [Permissions]() + - [$ignoreChannels](./bdscript/ignoreChannels.md) + - [$ignoreLinks](./bdscript/ignoreLinks.md) + - [$onlyAdmin](./bdscript/onlyAdmin.md) + - [$onlyBotChannelPerms](./bdscript/onlyBotChannelPerms.md) + - [$onlyBotPerms](./bdscript/onlyBotPerms.md) + - [$onlyForCategories](./bdscript/onlyForCategories.md) + - [$onlyForChannels](./bdscript/onlyForChannels.md) + - [$onlyForIDs](./bdscript/onlyForIDs.md) + - [$onlyForRoles](./bdscript/onlyForRoles.md) + - [$onlyForRoleIDs](./bdscript/onlyForRoleIDs.md) + - [$onlyForServers](./bdscript/onlyForServers.md) + - [$onlyForUsers](./bdscript/onlyForUsers.md) + - [$onlyIf](./bdscript/onlyIf.md) + - [$onlyIfMessageContains](./bdscript/onlyIfMessageContains.md) + - [$onlyNSFW](./bdscript/onlyNSFW.md) + - [$onlyPerms](./bdscript/onlyPerms.md) + - [$optOff](./bdscript/optOff.md) + - [Sorting]() + - [$sort](./bdscript/sort.md) + - [TTS]() + - [$tts](./bdscript/tts.md) + - [URLs]() + - [$url](./bdscript/url.md) - [Callbacks]() - [Introduction](./callbacks/introduction.md) From 3f0bf1dfe0da78302cb18ada7f7c8561d9f72096 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:14:18 +0300 Subject: [PATCH 0993/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 3315cd07732..65cc7a18728 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -172,7 +172,6 @@ - [$channelNames](./bdscript/channelNames.md) - [$channelPosition](./bdscript/channelPosition.md) - [$channelPosition[]](./bdscript/channelPositionComplex.md) - - [$channelSendMessage](./bdscript/channelSendMessage.md) - [$channelTopic](./bdscript/channelTopic.md) - [$channelTopic[]](./bdscript/channelTopicComplex.md) - [$channelType](./bdscript/channelType.md) From 7f53f348a0ed3e14969cc06e001db77be44ea65d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:15:09 +0300 Subject: [PATCH 0994/1179] Update SUMMARY.md --- src/SUMMARY.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 65cc7a18728..d8522173c02 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -143,7 +143,6 @@ - [$checkUserPerms](./bdscript/checkUserPerms.md) - [$clear](./bdscript/clear.md) - [$clear[]](./bdscript/clearComplex.md) - - [$closeTicket](./bdscript/closeTicket.md) - [$getBanReason](./bdscript/getBanReason.md) - [$isBanned](./bdscript/isBanned.md) - [$isTimedOut](./bdscript/isTimedOut.md) From 57fb0e2f76a5957ad6588e5d1e748a5dea7c2699 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:29:26 +0300 Subject: [PATCH 0995/1179] Update SUMMARY.md --- src/SUMMARY.md | 58 ++++++++++++++++++++++---------------------------- 1 file changed, 25 insertions(+), 33 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index d8522173c02..201ccb0b96f 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -80,9 +80,9 @@ - [$removeButtons](./bdscript/removeButtons.md) - [$removeButtons[]](./bdscript/removeButtonsComplex.md) - [$removeComponent](./bdscript/removeComponent.md) + - [$defer](./bdscript/defer.md) - [Embeds]() - [$addContainer](./bdscript/addContainer.md) - - [$addEmoji](./bdscript/addEmoji.md) - [$addField](./bdscript/addField.md) - [$addSection](./bdscript/addSection.md) - [$addThumbnail](./bdscript/addThumbnail.md) @@ -93,21 +93,11 @@ - [$color](./bdscript/color.md) - [$description](./bdscript/description.md) - [$embeddedURL](./bdscript/embeddedURL.md) - - [$embedSuppressErrors](./bdscript/embedSuppressErrors.md) - [$footer](./bdscript/footer.md) - [$footerIcon](./bdscript/footerIcon.md) - [$image](./bdscript/image.md) - [$thumbnail](./bdscript/thumbnail.md) - [$title](./bdscript/title.md) - - [Reactions]() - - [$addCmdReactions](./bdscript/addCmdReactions.md) - - [$addMessageReactions](./bdscript/addMessageReactions.md) - - [$addReactions](./bdscript/addReactions.md) - - [$awaitFunc](./bdscript/awaitFunc.md) - - [$clearReactions](./bdscript/clearReactions.md) - - [$getReactions](./bdscript/getReactions.md) - - [$publishMessage](./bdscript/publishMessage.md) - - [$userReacted](./bdscript/userReacted.md) - [User]() - [$author](./bdscript/author.md) - [$authorAvatar](./bdscript/authorAvatar.md) @@ -117,6 +107,7 @@ - [$discriminator](./bdscript/discriminator.md) - [$displayName](./bdscript/displayName.md) - [$displayName[]](./bdscript/displayNameComplex.md) + - [$getUserStatus](./bdscript/getUserStatus.md) - [$isAdmin](./bdscript/isAdmin.md) - [$isBooster](./bdscript/isBooster.md) - [$isBot](./bdscript/isBot.md) @@ -182,6 +173,9 @@ - [$findChannel](./bdscript/findChannel.md) - [$getSlowmode](./bdscript/getSlowmode.md) - [$isNSFW](./bdscript/isNSFW.md) + - [$closeTicket](./bdscript/closeTicket.md) + - [$isTicket](./bdscript/isTicket.md) + - [$newTicket](./bdscript/newTicket.md) - [$lastMessageID](./bdscript/lastMessageID.md) - [$lastPinTimestamp](./bdscript/lastPinTimestamp.md) - [$mentionedChannels](./bdscript/mentionedChannels.md) @@ -228,6 +222,7 @@ - [$takeRole](./bdscript/takeRole.md) - [$userRoles](./bdscript/userRoles.md) - [Bot]() + - [$awaitFunc](./bdscript/awaitFunc.md) - [$botCommands](./bdscript/botCommands.md) - [$botID](./bdscript/botID.md) - [$botLeave](./bdscript/botLeave.md) @@ -256,9 +251,11 @@ - [$slashCommandsCount](./bdscript/slashCommandsCount.md) - [$slashID](./bdscript/slashID.md) - [$slashID[]](./bdscript/slashIDComplex.md) + - [$executionTime](./bdscript/executionTime.md) - [$unregisterGuildCommands](./bdscript/unregisterGuildCommands.md) - [$unregisterGuildCommands[]](./bdscript/unregisterGuildCommandsComplex.md) - [$uptime](./bdscript/uptime.md) + - [$eval](./bdscript/eval.md) - [Server]() - [$afkTimeout](./bdscript/afkTimeout.md) - [$allMembersCount](./bdscript/allMembersCount.md) @@ -267,6 +264,7 @@ - [$boostLevel](./bdscript/boostLevel.md) - [$getServerInvite](./bdscript/getServerInvite.md) - [$getServerInvite[]](./bdscript/getServerInviteComplex.md) + - [$getInviteInfo](./bdscript/getInviteInfo.md) - [$guildBanner](./bdscript/guildBanner.md) - [$guildExists](./bdscript/guildExists.md) - [$guildID](./bdscript/guildID.md) @@ -326,7 +324,6 @@ - [$disableSpecialEscaping](./bdscript/disableSpecialEscaping.md) - [$editSplitText](./bdscript/editSplitText.md) - [$emoteCount](./bdscript/emoteCount.md) - - [$enableDecimals](./bdscript/enableDecimals.md) - [$getTextSplitIndex](./bdscript/getTextSplitIndex.md) - [$getTextSplitLength](./bdscript/getTextSplitLength.md) - [$joinSplitText](./bdscript/joinSplitText.md) @@ -359,6 +356,7 @@ - [$min](./bdscript/min.md) - [$modulo](./bdscript/modulo.md) - [$multi](./bdscript/multi.md) + - [$optOff](./bdscript/optOff.md) - [$random](./bdscript/random.md) - [$random[]](./bdscript/randomComplex.md) - [$randomCategoryID](./bdscript/randomCategoryID.md) @@ -371,9 +369,11 @@ - [$randomUser](./bdscript/randomUser.md) - [$randomUserID](./bdscript/randomUserID.md) - [$round](./bdscript/round.md) + - [$sort](./bdscript/sort.md) - [$sqrt](./bdscript/sqrt.md) - [$sub](./bdscript/sub.md) - [$sum](./bdscript/sum.md) + - [$enableDecimals](./bdscript/enableDecimals.md) - [Time]() - [$date](./bdscript/date.md) - [$day](./bdscript/day.md) @@ -411,9 +411,11 @@ - [$getMessage](./bdscript/getMessage.md) - [$isMessageEdited](./bdscript/isMessageEdited.md) - [$isUserDMEnabled](./bdscript/isUserDMEnabled.md) + - [$ignoreLinks](./bdscript/ignoreLinks.md) - [$messageID](./bdscript/messageID.md) - [$pinMessage](./bdscript/pinMessage.md) - [$pinMessage[]](./bdscript/pinMessageComplex.md) + - [$publishMessage](./bdscript/publishMessage.md) - [$reply](./bdscript/reply.md) - [$reply[]](./bdscript/replyComplex.md) - [$replyIn](./bdscript/replyIn.md) @@ -422,6 +424,8 @@ - [$sendEmbedMessage](./bdscript/sendEmbedMessage.md) - [$sendMessage](./bdscript/sendMessage.md) - [$unpinMessage](./bdscript/unpinMessage.md) + - [$tts](./bdscript/tts.md) + - [$url](./bdscript/url.md) - [Variables]() - [$getChannelVar](./bdscript/getChannelVar.md) - [$getLeaderboardPosition](./bdscript/getLeaderboardPosition.md) @@ -450,11 +454,14 @@ - [$threadMessageCount](./bdscript/threadMessageCount.md) - [$threadRemoveMember](./bdscript/threadRemoveMember.md) - [$threadUserCount](./bdscript/threadUserCount.md) - - [Tickets]() - - [$closeTicket](./bdscript/closeTicket.md) - - [$isTicket](./bdscript/isTicket.md) - - [$newTicket](./bdscript/newTicket.md) - - [Emojis]() + - [Emojis & Reactions]() + - [$addCmdReactions](./bdscript/addCmdReactions.md) + - [$addMessageReactions](./bdscript/addMessageReactions.md) + - [$addReactions](./bdscript/addReactions.md) + - [$clearReactions](./bdscript/clearReactions.md) + - [$getReactions](./bdscript/getReactions.md) + - [$userReacted](./bdscript/userReacted.md) + - [$addEmoji](./bdscript/addEmoji.md) - [$customEmoji](./bdscript/customEmoji.md) - [$emojiExists](./bdscript/emojiExists.md) - [$emojiName](./bdscript/emojiName.md) @@ -470,8 +477,6 @@ - [$webhookSend](./bdscript/webhookSend.md) - [$webhookTitle](./bdscript/webhookTitle.md) - [$webhookUsername](./bdscript/webhookUsername.md) - - [Invites]() - - [$getInviteInfo](./bdscript/getInviteInfo.md) - [Error Handling]() - [$catch](./bdscript/catch.md) - [$endtry](./bdscript/endtry.md) @@ -479,16 +484,10 @@ - [$suppressErrors](./bdscript/suppressErrors.md) - [$suppressErrors[]](./bdscript/suppressErrorsComplex.md) - [$try](./bdscript/try.md) - - [User Status]() - - [$getUserStatus](./bdscript/getUserStatus.md) - - [Execution Control]() - - [$defer](./bdscript/defer.md) - - [$eval](./bdscript/eval.md) - - [$executionTime](./bdscript/executionTime.md) - [$stop](./bdscript/stop.md) + - [$embedSuppressErrors](./bdscript/embedSuppressErrors.md) - [Permissions]() - [$ignoreChannels](./bdscript/ignoreChannels.md) - - [$ignoreLinks](./bdscript/ignoreLinks.md) - [$onlyAdmin](./bdscript/onlyAdmin.md) - [$onlyBotChannelPerms](./bdscript/onlyBotChannelPerms.md) - [$onlyBotPerms](./bdscript/onlyBotPerms.md) @@ -503,13 +502,6 @@ - [$onlyIfMessageContains](./bdscript/onlyIfMessageContains.md) - [$onlyNSFW](./bdscript/onlyNSFW.md) - [$onlyPerms](./bdscript/onlyPerms.md) - - [$optOff](./bdscript/optOff.md) - - [Sorting]() - - [$sort](./bdscript/sort.md) - - [TTS]() - - [$tts](./bdscript/tts.md) - - [URLs]() - - [$url](./bdscript/url.md) - [Callbacks]() - [Introduction](./callbacks/introduction.md) From 1584f41016780e7cb16ef1c94c6b57492d0e94ed Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:48:11 +0300 Subject: [PATCH 0996/1179] Update chrome.css --- src/theme/css/chrome.css | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 6236df43d5b..d24add39c5c 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1267,6 +1267,21 @@ ul#searchresults span.teaser em { background: rgba(255, 255, 255, 0.06); } +li li.chapter-item > div:first-child { + user-select: none; + width: 100%; + -webkit-user-select: none; + border-radius: 10px; + padding: .2rem 1rem .2rem 1rem; + margin-bottom: .9rem; + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(255, 255, 255, 0.04); + cursor: pointer; +} + +li li.chapter-item > div:first-child:hover { + background: rgba(255, 255, 255, 0.06); +} /* Deprecated function tag */ /* $ <- ITS IMPORTANT! */ @@ -1493,3 +1508,4 @@ ul#searchresults span.teaser em { font-size: 1rem; } } + From 3a7df24515d41614a09ac8015075aaa01000c0cc Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:49:46 +0300 Subject: [PATCH 0997/1179] Update chrome.css --- src/theme/css/chrome.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index d24add39c5c..87fefe1bcde 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1273,7 +1273,7 @@ li li.chapter-item > div:first-child { -webkit-user-select: none; border-radius: 10px; padding: .2rem 1rem .2rem 1rem; - margin-bottom: .9rem; + margin-bottom: .5rem; background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.04); cursor: pointer; @@ -1509,3 +1509,4 @@ li li.chapter-item > div:first-child:hover { } } + From 0d2cc97d4491461db8fd4d5bb3b67d1adbf860c4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:52:02 +0300 Subject: [PATCH 0998/1179] Update SUMMARY.md --- src/SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 201ccb0b96f..a801d4a8fb7 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -323,7 +323,6 @@ - [$disableInnerSpaceRemoval](./bdscript/disableInnerSpaceRemoval.md) - [$disableSpecialEscaping](./bdscript/disableSpecialEscaping.md) - [$editSplitText](./bdscript/editSplitText.md) - - [$emoteCount](./bdscript/emoteCount.md) - [$getTextSplitIndex](./bdscript/getTextSplitIndex.md) - [$getTextSplitLength](./bdscript/getTextSplitLength.md) - [$joinSplitText](./bdscript/joinSplitText.md) @@ -463,6 +462,7 @@ - [$userReacted](./bdscript/userReacted.md) - [$addEmoji](./bdscript/addEmoji.md) - [$customEmoji](./bdscript/customEmoji.md) + - [$emoteCount](./bdscript/emoteCount.md) - [$emojiExists](./bdscript/emojiExists.md) - [$emojiName](./bdscript/emojiName.md) - [$isEmojiAnimated](./bdscript/isEmojiAnimated.md) From d5efa7aa1e4a08c6e36d9b034a9d52b82eece47a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:59:37 +0300 Subject: [PATCH 0999/1179] Update SUMMARY.md --- src/SUMMARY.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index a801d4a8fb7..83a2e94e136 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -108,9 +108,11 @@ - [$displayName](./bdscript/displayName.md) - [$displayName[]](./bdscript/displayNameComplex.md) - [$getUserStatus](./bdscript/getUserStatus.md) + - [$getCustomStatus](./bdscript/getCustomStatus.md) - [$isAdmin](./bdscript/isAdmin.md) - [$isBooster](./bdscript/isBooster.md) - [$isBot](./bdscript/isBot.md) + - [$isUserDMEnabled](./bdscript/isUserDMEnabled.md) - [$nickname](./bdscript/nickname.md) - [$nickname[]](./bdscript/nicknameComplex.md) - [$userAvatar](./bdscript/userAvatar.md) @@ -187,7 +189,6 @@ - [$serverChannelExists](./bdscript/serverChannelExists.md) - [$slowmode](./bdscript/slowmode.md) - [$systemChannelID](./bdscript/systemChannelID.md) - - [$useChannel](./bdscript/useChannel.md) - [$voiceUserLimit](./bdscript/voiceUserLimit.md) - [Roles]() - [$allowRoleMentions](./bdscript/allowRoleMentions.md) @@ -292,12 +293,6 @@ - [$blackListRolesIDs](./bdscript/blackListRolesIDs.md) - [$blackListServers](./bdscript/blackListServers.md) - [$blackListUsers](./bdscript/blackListUsers.md) - - [Mentions]() - - [$allowMention](./bdscript/allowMention.md) - - [$allowUserMentions](./bdscript/allowUserMentions.md) - - [$isMentioned](./bdscript/isMentioned.md) - - [$mentioned](./bdscript/mentioned.md) - - [$nomention](./bdscript/nomention.md) - [Arguments & Conditions]() - [$argCount](./bdscript/argCount.md) - [$argsCheck](./bdscript/argsCheck.md) @@ -327,14 +322,8 @@ - [$getTextSplitLength](./bdscript/getTextSplitLength.md) - [$joinSplitText](./bdscript/joinSplitText.md) - [$linesCount](./bdscript/linesCount.md) - - [$message](./bdscript/message.md) - - [$message[]](./bdscript/messageComplex.md) - - [$noMentionMessage](./bdscript/noMentionMessage.md) - - [$noMentionMessage[]](./bdscript/noMentionMessageComplex.md) - [$numberSeparator](./bdscript/numberSeparator.md) - [$removeContains](./bdscript/removeContains.md) - - [$removeLinks](./bdscript/removeLinks.md) - - [$removeLinks[]](./bdscript/removeLinksComplex.md) - [$removeSplitTextElement](./bdscript/removeSplitTextElement.md) - [$repeatMessage](./bdscript/repeatMessage.md) - [$replaceText](./bdscript/replaceText.md) @@ -355,6 +344,13 @@ - [$min](./bdscript/min.md) - [$modulo](./bdscript/modulo.md) - [$multi](./bdscript/multi.md) + - [$round](./bdscript/round.md) + - [$sort](./bdscript/sort.md) + - [$sqrt](./bdscript/sqrt.md) + - [$sub](./bdscript/sub.md) + - [$sum](./bdscript/sum.md) + - [$enableDecimals](./bdscript/enableDecimals.md) + - [Random]() - [$optOff](./bdscript/optOff.md) - [$random](./bdscript/random.md) - [$random[]](./bdscript/randomComplex.md) @@ -367,12 +363,6 @@ - [$randomText](./bdscript/randomText.md) - [$randomUser](./bdscript/randomUser.md) - [$randomUserID](./bdscript/randomUserID.md) - - [$round](./bdscript/round.md) - - [$sort](./bdscript/sort.md) - - [$sqrt](./bdscript/sqrt.md) - - [$sub](./bdscript/sub.md) - - [$sum](./bdscript/sum.md) - - [$enableDecimals](./bdscript/enableDecimals.md) - [Time]() - [$date](./bdscript/date.md) - [$day](./bdscript/day.md) @@ -394,7 +384,9 @@ - [$getCooldown](./bdscript/getCooldown.md) - [$globalCooldown](./bdscript/globalCooldown.md) - [$serverCooldown](./bdscript/serverCooldown.md) - - [Message Management]() + - [Message]() + - [$allowMention](./bdscript/allowMention.md) + - [$allowUserMentions](./bdscript/allowUserMentions.md) - [$channelSendMessage](./bdscript/channelSendMessage.md) - [$deleteIn](./bdscript/deleteIn.md) - [$deleteMessage](./bdscript/deleteMessage.md) @@ -404,13 +396,16 @@ - [$editIn](./bdscript/editIn.md) - [$editMessage](./bdscript/editMessage.md) - [$ephemeral](./bdscript/ephemeral.md) + - [$isMentioned](./bdscript/isMentioned.md) + - [$mentioned](./bdscript/mentioned.md) + - [$nomention](./bdscript/nomention.md) - [$getAttachments](./bdscript/getAttachments.md) - - [$getCustomStatus](./bdscript/getCustomStatus.md) - [$getEmbedData](./bdscript/getEmbedData.md) - [$getMessage](./bdscript/getMessage.md) - [$isMessageEdited](./bdscript/isMessageEdited.md) - - [$isUserDMEnabled](./bdscript/isUserDMEnabled.md) - [$ignoreLinks](./bdscript/ignoreLinks.md) + - [$message](./bdscript/message.md) + - [$message[]](./bdscript/messageComplex.md) - [$messageID](./bdscript/messageID.md) - [$pinMessage](./bdscript/pinMessage.md) - [$pinMessage[]](./bdscript/pinMessageComplex.md) @@ -420,9 +415,14 @@ - [$replyIn](./bdscript/replyIn.md) - [$repliedMessageID](./bdscript/repliedMessageID.md) - [$repliedMessageID[]](./bdscript/repliedMessageIDComplex.md) + - [$removeLinks](./bdscript/removeLinks.md) + - [$removeLinks[]](./bdscript/removeLinksComplex.md) + - [$noMentionMessage](./bdscript/noMentionMessage.md) + - [$noMentionMessage[]](./bdscript/noMentionMessageComplex.md) - [$sendEmbedMessage](./bdscript/sendEmbedMessage.md) - [$sendMessage](./bdscript/sendMessage.md) - [$unpinMessage](./bdscript/unpinMessage.md) + - [$useChannel](./bdscript/useChannel.md) - [$tts](./bdscript/tts.md) - [$url](./bdscript/url.md) - [Variables]() From 4cd305bc1eef94b500af61989daaf9e8d7465ff2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 22:16:08 +0300 Subject: [PATCH 1000/1179] Update settings.md --- src/settings.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/settings.md b/src/settings.md index 52f292207e5..84f73461c17 100644 --- a/src/settings.md +++ b/src/settings.md @@ -43,15 +43,6 @@ Let's customize your experience in our Bot Designer For Discord wiki world!
    -
    -

    Folders (Soon...)

    -

    Folders make it easier to find the functions you need.

    -
    - -
    -

    "Enable" (Disabled)

    -
    -

    Effects

    It's only decoration for wiki.

    From 19625ca13b61ca9bbd2c624551a482b859a20d9d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 22:16:42 +0300 Subject: [PATCH 1001/1179] Update apply-settings.js --- src/theme/settings/apply-settings.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/theme/settings/apply-settings.js b/src/theme/settings/apply-settings.js index fb5b4e48dde..36d528fb685 100644 --- a/src/theme/settings/apply-settings.js +++ b/src/theme/settings/apply-settings.js @@ -149,7 +149,6 @@ function applySettings() { } catch {} const defaultData = { - folders: false, "discord-example-theme": "dark", "text-size": "60%", "language": "en", From da7f1f53a3344f0506554580e124d39a65aa6cb7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 22:18:13 +0300 Subject: [PATCH 1002/1179] Update index.js --- src/theme/settings/index.js | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/src/theme/settings/index.js b/src/theme/settings/index.js index fe9142031ed..86a50eedaa9 100644 --- a/src/theme/settings/index.js +++ b/src/theme/settings/index.js @@ -151,24 +151,6 @@ function changeDiscordTheme(colorId) { updateJsonFile("discord-example-theme", colorId); } -function foldersSetting() { - const manageFolderButton = document.getElementById("manageFolder"); - let inv = JSON.parse(localStorage.getItem("json")); - - if (inv["folders"] === false) { - // Enabled - var folderStatus = "Disable"; - var boolFolderStatus = true; - } else { - // Disabled - var folderStatus = "Enable"; - var boolFolderStatus = false; - } - - manageFolderButton.textContent = folderStatus; - updateJsonFile("folders", boolFolderStatus); -} - function effectsSetting() { const manageEffectButton = document.getElementById("manageEffect"); const snowflakes = document.querySelector(".snowflakes"); @@ -364,7 +346,6 @@ function loadSettings() { const charCountElement = document.querySelector(".charCount"); const uiManageEffectButton = document.getElementById("manageEffect"); const uiSnowflakes = document.querySelector(".snowflakes"); - const uiManageFolderButton = document.getElementById("manageFolder"); let data; @@ -373,7 +354,6 @@ function loadSettings() { } catch {} data ??= { - folders: false, "discord-example-theme": "dark", "text-size": "60%", "language": "en", @@ -467,14 +447,6 @@ function loadSettings() { uiSnowflakes.style.visibility = data["effects"]; uiManageEffectButton.textContent = effectStatus; - if (data["folders"] === false) { - var folderStatus = "Enable"; - } else { - var folderStatus = "Disable"; - } - - uiManageFolderButton.textContent = folderStatus; - const button = document.querySelector(".resetToDefault"); button.addEventListener("mousedown", resetAllHover); button.addEventListener("mouseup", resettAllNone); From d1522062b87cb3d613b025157181f08a39454c08 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 22:19:13 +0300 Subject: [PATCH 1003/1179] Update style.css --- src/theme/settings/style.css | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/theme/settings/style.css b/src/theme/settings/style.css index c3148e373f6..6f79d0b787a 100644 --- a/src/theme/settings/style.css +++ b/src/theme/settings/style.css @@ -98,7 +98,6 @@ button:not(#menu-bar i, #menu-bar .icon-button) { } .textfontbuttons, -.folderbuttons, .effectbuttons { user-select: none; -webkit-user-select: none; @@ -110,8 +109,7 @@ button:not(#menu-bar i, #menu-bar .icon-button) { .fbutton, .hgButton, .hbutton, -.ebutton, -.folderbutton { +.ebutton { -webkit-user-select: none; user-select: none; touch-action: manipulation; @@ -287,8 +285,7 @@ button:not(#menu-bar i, #menu-bar .icon-button) { .fbutton:hover, .hgButton:hover, .hbutton:hover, -.ebutton:hover, -.folderbutton:hover { +.ebutton:hover { background: hsl(0deg 0% 100% / 12%); } From 8a4245f27141f547a5e6eaae9aed0ab5a42025ba Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 23:44:30 +0300 Subject: [PATCH 1004/1179] Update CHANGELOG.md --- src/CHANGELOG.md | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 7050b25a6e8..8325e95fcf7 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -15,28 +15,24 @@
    -
    -
    -

    January

    -

    Discord Components V2.0 Update

    - NEW -
    -
      -
    • Added $addTextDisplay[]
    • -
    • Added $addSeparator[]
    • -
    • Added $addContainer[]
    • -
    • Added $addSection[]
    • -
    • Added $addThumbnail[]
    • -
    • Added $addMediaGallery[]
    • -
    • Added $addMediaGalleryItem[]
    • -
    • Added $addActionRow[]
    • -
    • Added $addButtonCV2[]
    • -
    • Added $addMentionableSelect[]
    • -
    • Added $getMentionableSelectUserID[]
    • -
    • Added $getMentionableSelectUserIDs[]
    • -
    • Added $getMentionableSelectUserCount
    • -
    -
    +# 2026 + +## January +Added Components V2 functions: +- Added `$addTextDisplay[]` +- Added `$addSeparator[]` +- Added `$addContainer[]` +- Added `$addSection[]` +- Added `$addThumbnail[]` +- Added `$addMediaGallery[]` +- Added `$addMediaGallery[]` +- Added `$addMediaGalleryItem[]` +- Added `$addActionRow[]` +- Added `$addButtonCV2[]` +- Added `$addMentionableSelect[]` +- Added `$getMentionableSelectUserID[]` +- Added `$getMentionableSelectUserIDs[]` +- Added `$getMentionableSelectUserCount` # 2025 @@ -45,7 +41,7 @@ - Smoother animations in the app - Redesigned Premium Points shop - A lot of app bug fixes -- HTTP Awaiting Limit: 5s > 35s +- HTTP Timeout Limit: 5s > 35s - Fixed `$ceil[]` - Fixed `$floor[]` - Fixed `$getLeaderboardPosition[]` @@ -58,7 +54,7 @@ ## November - Major improvements to hosting infrastructure - Reworked bot status preview -- HTTP Awaiting Limit: 15s > 5s +- HTTP Timeout Limit: 15s > 5s ## October - Added setting to disable code highlighting in the command editor From c1e44ae3999076a5964f0f27ee90ff54b1518b9c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 23:49:33 +0300 Subject: [PATCH 1005/1179] Update CHANGELOG.json --- external/CHANGELOG.json | 1472 +++++++++++++++++++-------------------- 1 file changed, 721 insertions(+), 751 deletions(-) diff --git a/external/CHANGELOG.json b/external/CHANGELOG.json index ad4a6e376d7..cd9e08e2dce 100644 --- a/external/CHANGELOG.json +++ b/external/CHANGELOG.json @@ -1,752 +1,722 @@ -{ - "2026": { - "january": [ - "Added `$addTextDisplay[]`", - "Added `$addSeparator[]`", - "Added `$addContainer[]`", - "Added `$addSection[]`", - "Added `$addThumbnail[]`", - "Added `$addMediaGallery[]`", - "Added `$addMediaGalleryItem[]`", - "Added `$addActionRow[]`", - "Added `$addButtonCV2[]`", - "Added `$addMentionableSelect[]`", - "Added `$getMentionableSelectUserID[]`", - "Added `$getMentionableSelectUserIDs[]`", - "Added `$getMentionableSelectUserCount`" - ] - }, - "2025": { - "december": [ - "Added \"Sign out other sessions\" button", - "Smoother animations in the app", - "Redesigned Premium Points shop", - "A lot of app bug fixes", - "HTTP Awaiting Limit: 5s > 35s", - "Fixed `$ceil[]`", - "Fixed `$floor[]`", - "Fixed `$getLeaderboardPosition[]`", - "AI Quota: 5000 > 10000", - "Log Quota: 1500 > 3000", - "Updated BDFD App icon for Android" - ], - "november": [ - "Major improvements to hosting infrastructure", - "Reworked bot status preview", - "HTTP Awaiting Limit: 15s > 5s" - ], - "october": ["Added setting to disable code highlighting in the command editor"], - "september": [ - "Updated BDFD App icon for iOS 26", - "Reworked bot list" - ], - "july": ["BDScript bug fixes"], - "february": ["Fixed app crashing during premium points purchases"], - "january": [ - "Added `$afkChannelID`", - "Added `$afkTimeout[]`", - "Added `$boostLevel`", - "Added `$byteCount[]`", - "Added `$commandFolder`", - "Added `$commandName`", - "Added `$commandTrigger`", - "Added `$emojiExists[]`", - "Added `$emojiName[]`", - "Added `$getAttachments[]`", - "Added `$getSlowmode[]`", - "Added `$guildBanner[]`", - "Added `$isEmojiAnimated[]`", - "Added `$isMessageEdited[]`", - "Added `$lastMessageID`", - "Added `$lastPinTimestamp`", - "Added `$linesCount[]`", - "Added `$messageEditedTimestamp[]`", - "Added `$rolePerms[]`", - "Added `$rulesChannelID[]`", - "Added `$systemChannelID`", - "Added `$threadMessageCount`", - "Added `$threadUserCount`", - "Added `$voiceUserLimit[]`" - ] - }, - "2024": { - "august": [ - "Added `$log[]`", - "Added `$logQuota`", - "Added `$suppressErrorLogging`", - "Added `$ceil[]`", - "Added `$floor[]`", - "Added `$sqrt[]`", - "Added `$isInteger[]`" - ], - "july": [ - "Added `$isBooster[]`", - "Added `$setUserRoles[]`", - "Added `$getLeaderboardPosition[]`" - ], - "june": [ - "Added `$ai[]`", - "Added `$aiQuota`" - ], - "march": [ - "Fixed the bot sometimes duplicating its answer", - "Fixed `$onlyForIDs[]` not working correctly on big nodes" - ] - }, - "2023": { - "june": [ - "Fixed custom images not always being displayed", - "Allowed for empty string values in `$jsonSetString[]`", - "Added `$jsonArraySort[]`", - "Added `$jsonArrayReverse[]`", - "JSON Array function now can interact with JSON root", - "Emoji argument now allows for emoji aliases", - "Added `$nodeVersion[]`", - "Added `$removeEmoji[]`", - "Added `$addMessageReactions[]`", - "Fixed `$nickname[]` to work with the new Discord username system", - "Added `$displayName[]`", - "Added `$userBadges[]`", - "Added `$userBannerColor[]`" - ], - "may": ["Fixed `$min[]` and `$max[]` not working with floats"], - "april": ["Fixed caching timeout information"], - "march": [ - "Fixed callbacks not always getting detected", - "Fixed JSON functions inability to correctly return an object", - "Fixed `$jsonArrayPop[]` and `$jsonArrayShift[]` only working once on an array", - "Fixed a bug where `$jsonArrayPop[]` and `$jsonArrayShift[]` would stop execution when trying to operate on an empty array", - "Fixed `$round[]` adding trailing zeros", - "Added `$removeAllComponents`" - ], - "february": [ - "Fixed caching issues for leaderboards", - "Added `$jsonArrayShift[]`", - "Added `$jsonArrayUnshift[]`", - "Added `$jsonArrayPop[]`", - "Added `$jsonJoinArray[]`" - ], - "january": [ - "Added `$jsonParse[]`", - "Added `$jsonClear`", - "Added `$jsonStringify`", - "Added `$jsonPretty[]`", - "Added `$json[]`", - "Added `$jsonExists[]`", - "Added `$jsonSet[]`", - "Added `$jsonArray[]`", - "Added `$jsonArrayAppend[]`", - "Added `$jsonArrayCount[]`", - "Added `$jsonUnset[]`", - "Added `$disableInnerSpaceRemoval`", - "Fixed big numbers not working in leaderboard functions", - "Added Emoji argument type", - "Added `$isTicket[]`", - "Added `$userBanner[]`", - "Added `$randomGuildID`", - "Added `$randomRoleID[]`", - "Added `$randomCategoryID[]`", - "Added `$channelNames[]`", - "Added `$categoryChannels[]`", - "Fixed `$allowUserMentions[]` not working on slash commands", - "Fixed `$addTextInput[]` not working with empty values", - "Added `$jsonSetString[]`", - "Added `$jsonArrayIndex[]`" - ] - }, - "2022": { - "december": [ - "Added limit on input numbers to 2128 on the basic math functions", - "Fixed BDScript 2 having problems with handling unicode characters", - "Fixed `$stop` causing undefined behaviour", - "Added `$getBanReason[]`", - "Fixed caching issues for the text splitting functions", - "Fixed issues with custom images" - ], - "november": [ - "Deprecated `$userJoinedDiscord[]` in favor of `$creationDate[]`", - "Added `Format` argument to `$creationDate[]`", - "Added `$editSplitText[]`", - "Added `$serverEmojis[]`", - "Added `$setChannelVar[]`", - "Added `$getChannelVar[]`", - "Added `$resetChannelVar[]`", - "Added `channel` option to `$variablesCount[]`", - "Fixed BDScript 2's escaping not working in some cases" - ], - "october": [ - "Added `$publishMessage[]`", - "Made `$useChannel[]` work with message components", - "Added `$channelPosition[]`", - "Added `$categoryID`", - "Added `$varExists[]`", - "Added `$boostCount`", - "Added `$categoryCount`", - "Added `$isTimedOut[]`", - "Added `stage` and `forum` channel types to `$createChannel[]`", - "Added `stage`, `announcement`, and `forum` channel types to `$channelType[]`", - "`$enableDecimals[]` now works with `$calculate[]`", - "Added `$getCustomStatus[]`", - "Added `$httpStatus`", - "Added `$httpGetHeader[]`", - "Added `$botOwnerID`", - "Added `$repliedMessageID`", - "Fixed the guild list fetching issue", - "Added `$parentID`" - ], - "september": [ - "Added `channelID` field to `$awaitFunc[]`", - "Added `$trimContent`", - "Fixed fetching guilds not always working in the app", - "Added `$slashID`", - "Fixed slash command reordering", - "Added intent autodetection ", - "Added `globaluser` option to `$variablesCount[]`", - "Added support for big numbers in the math functions", - "Added new text tutorial", - "Fixed `$checkUserPerms[]` ignoring channel permissions", - "Fixed `$addReactions[]` not working on slash commands", - "Fixed `Ticket number` argument not working in `$newTicket[]`", - "Fixed `$httpAddHeader[]`", - "Fixed some callbacks not being detected as callbacks", - "Fixed attachments not working in slash commands" - ], - "august": [ - "Added `$scriptLanguage`", - "Fixed `$stop` breaking `$if[]`", - "Renamed `$customImage[]` argument to `Custom image tag`", - "Added `$hypesquad[]`", - "Added `$dmChannelID[]`", - "Fixed the app's max choices limit", - "Fixed `$registerGuildCommands[]` removing previously registered commands", - "Fixed `$reply` not working in DMs", - "Made it possible to return milliseconds and nanoseconds in `$getTimestamp[]`", - "Fixed `$addTextInput[]` not verifying max length", - "Fixed `$url[]` returning an error when no input was provided", - "Added `$userServerAvatar[]`", - "Fixed `$cropText[]` not supporting unicode", - "Not putting required slash command options on top no longer breaks the commands" - ], - "july": [ - "Added hex to the color picker", - "Fixed `$executionTime` not working inside embed fields", - "App now sends notification when bot hosting is expired", - "Added `$sendNotification[]` for premium bots", - "Made it possible to use only one option in a select menu", - "Fixed `$editChannelPerms[]`", - "Fixed verification of slash command names", - "Fixed `$sort` not working with `-1` as return amount" - ], - "june": [ - "Fixed `$onlyBotChannelPerms[]`", - "Fixed description verification in `$addSelectMenuOption[]` and `$editSelectMenuOption[]`", - "Updated limits of select menu options", - "Fixed updating components which are refering to `$messageID`" - ], - "may": [ - "Fixed token issues", - "Fixed disappearing slash command options", - "`AllowedMentions` field is now used in `$channelSendMessage[]`, `$sendEmbedMessage[]` and `$sendMessage[]`", - "Fixed black screen after bot creation", - "Fixed in-app tutorial", - "Fixed escaping response in interactions", - "Fixed cooldown error messages", - "Fixed empty values in variables not getting saved", - "Fixed userID being ignored when guildID is passed to `$getUserVar[]`" - ], - "april": [ - "Added `'return ID of the ticket message'` argument to `$newTicket[]`", - "Fixed disappearing slash commands from the app's state" - ], - "march": [ - "Added `$toTitleCase[]`", - "Fixed invite permission calculator", - "Fixed `$suppressErrors[]` and `$embedSuppressErrors[]` getting ignored by components errors", - "Fixed updating some components", - "Added `$registerGuildCommands[]`", - "Added `$unregisterGuildCommands[]`", - "Added `/callback_list`, `/callback_tag_list`, and `/callback/:callback_tag` endpoints to public BDFD API" - ], - "february": [ - "`$httpResult[]` can return JSON now", - "Fixed `$httpResult[]` not working with multiple requests", - "Saving a command in the webapp no longer restarts the bots", - "Optimized slash commands resynchronization", - "Fixed custom images not working after saving a command", - "Made it possible to escape backslash by using `\\`", - "Removed user permission check for `$ban[]`, `$banID[]`, `$unban[]` and `$unbanID[]`", - "Added `$newModal[]`", - "Added `$addTextInput[]`", - "Added `$input[]`", - "Deprecated `$channelIDFromName[]`, use `$channelID[]` instead", - "Added `$onlyForCategories[]`", - "Fixed `$modifyChannelPerms[]` ignoring last permission", - "Added `$onAutoComplete[]` callback", - "Added `$autoCompleteOptionName`", - "Added `$autoCompleteOptionValue`", - "Added `$appendOptionSuggestion[]`" - ], - "january": [ - "Added `$unescape[]`", - "Added a neutral permission (`/`) to `$modifyChannelPerms[]`", - "Added stop bot button in the app", - "Added restart bot button in the app", - "Added `$editChannelPerms[]` (replacement for the deprecated `$modifyChannelPerms[]`)", - "Added `$roleGrant[]` (replacement for the deprecated `$giveRole[]` and `$takeRole[]`)", - "Fixed component functions inside `$async[]` scope", - "Increased the limit of http functions in one command to `5`", - "Fixed `$userPerms[]`", - "Fixed some bugs regarding math commands", - "Added public BDFD API", - "Added `$serverDescription[]`" - ] - }, - "2021": { - "december": [ - "Saving a command no longer causes the bot to restart", - "Fixed `$noMentionMessage[]` in BDScript 2", - "Added `$timeout[]` and `$untimeout[]`", - "`$mute[]` and `$unmute[]` has been marked as deprecated", - "Added `guildID` argument to `$getUserVar[]` and `$setUserVar[]`", - "Fixed the issue with some bots not starting with invalid intents enabled", - "Fixed the role cache", - "Slash command's option description is now required", - "Added `$shardID[]`", - "Added sharding", - "Improved interaction handling", - "Added `$defer`", - "Fixed getting invites", - "Added debug information inside the app for translators", - "Fixed `$serverNames`", - "Added `%` *(modulo)* to `$calculate[]`", - "Fixed removing custom images", - "Added missing permissions", - "Fixed unintentional server restarts", - "The last argument in `$replaceText[]` is now optional" - ], - "november": [ - "Added `$reply[]`", - "Added `$trimSpace[]`", - "Added `$url[]`", - "Upgraded the database", - "Sped up the node starting time", - "Added `$botCommands[]`", - "Added `$unpinMessage[]`", - "Added `$pinMessage[]`", - "Fixed `$isUserDMEnabled[]` not returning false in some cases", - "`$addReactions[]` now works in slash commands", - "`$dm[]` now can dm to more than one mention and can be used multiple times", - "`$dm` now can be used with `$dm[]`", - "`$random[]` now can use decimals", - "Added `$'randomChannelID` (BDScript Unstable only)", - "Fixed `$textSplit[]` removing space" - ], - "october": [ - "Added `$deleteMessage[]`", - "Added `$hostingExpireTime[]`", - "Added timestamp option to `$premiumExpireTime`", - "Fixed `$isUserDMEnabled[]`", - "Fixed `image` parameter in `$sendEmbedMessage[]` and `$webhookSend[]`", - "Fixed caching issue for `$serverIcon`", - "Made it possible to use empty labels in the buttons", - "New UI", - "Added search bar in the variables section", - "Made it possible to use `https://youtu.be/` URL in the streaming statuses", - "Added `$getTextSplitIndex[]`", - "Added `$serverChannelExists[]`", - "Fixed `$changeUsername[]` and `$changeUsernameWithID[]` not working on the current bot", - "Made `$ephemeral` work with the buttons", - "Fixed global variables not getting saved", - "Fixed `$deletecommand` not getting catched by `$try` block", - "Made it possible to open function's wiki article from the functions list" - ], - "september": [ - "Updated ToS", - "Fixed `$executionTime` not working in embeds", - "Added `$botNode`", - "Added `$isBanned[]`", - "Fixed a problem with `$charCount[]` having problems with unicode", - "Added `$channelType[]`", - "Added `$async[]` block function and `$endasync`", - "Added `$await[]`", - "Added `$sort[]`", - "Added `$userPerms[]`", - "Added `$serverNames[]`", - "Improved variables lookup time" - ], - "august": [ - "Added `$webhookTitle[]`", - "Added `$webhookDescription[]`", - "Added `$webhookFooter[]`", - "Added `$webhookContent[]`", - "Added `$webhookUsername[]`", - "Added `$webhookAvatarURL[]`", - "Added `$webhookCreate[]`", - "Removed permission check from `$deleteChannelsByName[]`", - "Removed permission check from `$deleteChannels[]`", - "Removed permission check from `$createChannel[]`", - "Fixed the issue with bots not working in threads", - "Added `$startThread[]`", - "Added `$webhookColor[]`", - "Fixed optional field in `$getServerVar[]`", - "Fixed floating points in `$onlyIf[]` conditions", - "Added `$webhookDelete[]`", - "Added `$webhookSend[]`", - "Removed permission check from `$modifyChannelPerms[]`", - "Made it possible to use multiple `$onInteraction[]`s", - "Added `$onInteraction` callback (without `[]`)", - "Added `$customID`", - "Made it possible to use different scripting languages in callbacks", - "Added `$editThread[]`", - "Added `$threadAddMember[]`", - "Added `$threadRemoveMember[]`", - "Added `$getEmbedData[]`", - "Made it possible to use block functions (`$if[]`, `$try`, etc.) inside function arguments in BDScript 2", - "Fixed preprocessor failures in some corner cases in BDScript 2", - "Fixed a bug with block-functions adding extra new line in BDScript 2", - "Fixed and optimised `$setVar[]`", - "Added `$sendEmbedMessage[]`", - "Fixed condition parsing in `$if[]` for the normal BDScript and BDScript Unstable (BDScript 2 didn't have any issues)", - "Made command saving faster" - ], - "july": [ - "Added `$getTimestamp`", - "Added support for decimals in the math functions", - "Added `$newSelectMenu[]`", - "Added `$addSelectMenuOption[]`", - "Added `$editSelectMenu[]`", - "Added `$editSelectMenuOption[]`", - "Added `$removeComponent[]`", - "Added `$calculate[]`", - "Added `$round[]`", - "Added `$enableDecimals[]`", - "Added `$nickname`", - "Added row and column information in BDScript 2 errors", - "Fixed an issue with BDScript 2 not requiring `]`", - "Adjusted the optimizer in BDScript 2", - "Added `$onlyForRoleIDs[]`", - "Added `$getCooldown[]`", - "Fixed problems with `]` in some functions", - "Fixed component functions inside `$eval[]` function", - "Fixed minor bugs inside BDScript 2 parser", - "Fixed author ID not showing up in `$mentioned[..;yes]`", - "Fixed `$serverNames` which removed two last characters", - "Fixed `$addTimestamp[]` when used for multiple embeds", - "Added limits for the `$round[]` function *(max decimal place)*", - "Added `$and[]`", - "Added `$or[]`", - "Added `$allowRoleMentions[]`", - "Added `$allowUserMentions[]`", - "Added `$guildExists[]`", - "Fixed `$serverVerificationLvl`" - ], - "june": [ - "Fixed `$sendMessage[]` not working in normal BDScript", - "Fixed `$checkUserPerms[]`", - "Added BDScript 2 script language", - "Added to BDScript 2:", - "- `$try`, `$catch` and `$error`", - "- `$eval[]`", - "- `$optOff[]`", - "- `$stop[]`", - "- `$var[]`", - "Added customizable code highlighting", - "Fixed `$lowestRole` and `$highestRole`", - "Added `$isBoolean[]`", - "Made it possible to add 5 buttons per row", - "Added optional field `return type` to `$getLeaderboardValue[]`", - "Added `$deleteRole[]`", - "Added `$ephemeral`", - "Added `$elseif[]` to BDScript 2", - "Fixed URL in buttons", - "Fixed buttons in DMs", - "Fixed problems with custom prefixes", - "Added `$getUserStatus[]`", - "Added `$min[]`", - "Added `$max[]`", - "Fixed `$customEmoji[]`", - "Made it possible to edit embeds in `$editMessage[]`", - "Added support for multiple embeds", - "Added `$httpAddHeader[]`", - "Added `$httpRemoveHeader[]`" - ], - "may": [ - "Fixed a bug which allowed executing certain types of callbacks as normal commands", - "Fixed member caching issue", - "Fixed caching bots", - "Fixed changing tokens in the webapp", - "Fixed `$isUserDMEnabled[]`", - "Added `$addButton[]`", - "Added `$editButton[]`", - "Added `$removeButtons` and `$removeButtons[]`", - "Added `$onInteraction[]` callback", - "Fixed some issues with slash commands", - "Added `$c[]`" - ], - "april": [ - "Added `$httpGet[]`, `$httpPost[]`, `$httpPut[]`, `$httpDelete[]` and `$httpPatch[]`", - "Improved overall caching", - "Added `$httpResult[]`", - "Made command execution faster" - ], - "march": [ - "Added `$cropText[]`", - "Added `userID` field to `$awaitFunc[]`", - "Fixed removing normal commands and slash commands", - "Added `$removeLinks[]`", - "Made returning authorID optional in `$findUser[]`", - "Added `$slowmode[]`", - "Added `$checkUserPerms[]`", - "Added `$isNSFW[]`", - "Fixed setting NSFW in `$modifyChannel[]`", - "Fixed `$userJoined[]` and `$userJoinedDiscord[]`", - "Added `$editMessage[]`", - "Fixed caching for new members.", - "Added `$slashCommandsCount`", - "Added `$botID`", - "Added more permissions:", - "- `AttachFiles`", - "- `TTS`", - "- `ManageWebhooks`", - "- `EmbedLinks`", - "- `ExternalEmojis`", - "Added `$serverCooldown[]`", - "Fixed an issue with not expiring app bans", - "Fixed some issues with `[` and `]`", - "Fixed problems with slash commands and cooldowns" - ], - "february": [ - "Added `$sendMessage[]`", - "Added `$reply`", - "Added slash commands", - "Fixed mentions in `$findChannel[]`", - "Improved performance in the command interpreter", - "Optimized reaction handlers", - "Added `$isSlash`", - "Added new optional field to `$message[]`", - "Fixed semicolons in `$channelSendMessage[]`" - ], - "january": [ - "Fixed a problem with statuses not showing up", - "Fixed an issue with mentions not working", - "Fixed loading bots from database", - "Increased duration to 40 minutes for `$deleteIn[]`, `$editIn[]`, `$editEmbedIn[]`, `$replyIn[]`", - "Added if statements (`$if[]`, `$else`, `$endif`)", - "GuildID is now returned instead of `everyone` in `$lowestRole[]` and `$highestRole[]`", - "Space commands have been removed (you can still use `$alwaysReply`)", - "Added `$channelTopic[]`", - "Fixed issues with streaming status", - "Fixed the issue with tags/discriminators not working for `$userID[]` and `$findUser[]` ", - "Added `$findChannel[]` and `$channelExists[]`", - "Added `$userJoined[]` and `$userJoinedDiscord[]`" - ] - }, - "2020": { - "december": [ - "Timezones in `$time[]` has been fixed", - "Updated Discord API version", - "Added Competing presence", - "Added `$botLeave[]`", - "Fix for `$getLeaderboardValue[]`", - "Added `userID` option to `$resetUserVar`", - "Added `serverID` option to `$serverOwner`", - "Added `$premiumExpireTime`" - ], - "november": [ - "Fixed disappearing bot status", - "Fixed `$serverCount` in bot status", - "Improved caching", - "Functions that require privileged intents are now marked accordingly", - "Added `$getLeaderboardValue[]`", - "Added `$awaitReactions[]`", - "Awaited commands are now available for everyone", - "Added awaited reactions", - "Fixed problems with DMs" - ], - "october": [ - "Optimized memory usage", - "Added member and presence intents", - "Added `$editEmbedIn[]`", - "Added `serverID` field to server variables", - "Allowed using awaited functions in awaited commands", - "Fixed leaderboards", - "Fixed `$randomMention`, `$randomUser` and `$randomUserID`", - "Added `$awaitReactions[]` for premium bots", - "Added `$usedEmoji`", - "`$deletecommand` sends an error now", - "Fixed `$serverVerificationLvl` not working on very high verification servers", - "Fixed reconnecting bots to gateway" - ], - "september": [ - "Added `$ignoreTriggerCase` for premium bots", - "Fixed caching guilds", - "`$findUser[]` & `$findRole[]` are no longer case sensitive", - "`$findUser[]` returns authorID if no user found", - "Added awaited commands for premium bots", - "Fixed weird brackets in embeds", - "Added trigger list in the app" - ], - "august": [ - "Migrated to the new infrastructure (new database and API)", - "Premium released", - "Fixed `$isMentionable[]`", - "Fixed `$isHoisted[]`", - "Added `$removeSplitTextElement[]`", - "`$userAvatar[]` no longer stops code execution", - "Fixed `$argCount[]`", - "Added `$findUser[]`", - "Added `$findRole[]`", - "Added `$disableSpecialEscaping`" - ], - "july": [ - "Renamed `$splitText[]` to `$getSplitText[]` to avoid confusion _(`$splitText[]` still works)_", - "Added `$joinSplitText[]`", - "Added `$getInviteInfo[]`", - "Added `$guildID[]`", - "Fixed `$numberSeparator[]` in the bot's status", - "`$roleID[]` and `$channelID[]` no longer stop code execution", - "Enabled BDScript Unstable for callbacks", - "Added `$getTextSplitLength`" - ], - "june": [ - "Fixed `$getReactions[]` in BDScript Unstable", - "Fixed bracket escaping for some commands in BDScript Unstable", - "Fixed `$modifyChannel[]` (random slowmodes added on channels)" - ], - "may": [ - "Fixed `$onlyBotPerms[]`", - "Bot Designer List Open Beta", - "Added `$botListDescription[]` and `$botListHide`", - "Fixed brackets issue in `$serverNames`", - "Other bug fixing for Bot Designer and Bot Designer List" - ], - "april": [ - "Fixed `$serverIcon`", - "Added `$changeCooldownTime[]`", - "Disabled `$randomUserID`, `$'randomUserID`, `$deleteIn` and `$dm` in `$onMessageDelete`", - "Fixed `$addField[]`", - "Added error message in `$getServerVar[]` when provided variable does not exist", - "Fixed `$userID[]` to not stop code execution, if user is not found", - "Added `$botLeave`", - "Removed permission check from `$clear` command.", - "Fixed `$isAdmin[]`" - ], - "march": [ - "Added `$getReactions[]` and `$userReacted[]`", - "New command interpreter", - "Added to new parser:", - "- `$'random[]` and `$'random`", - "- `$'randomText[]`", - "- `$'randomUser`", - "- `$'randomMention`", - "- `$'randomUserID`", - "- `$'randomString[]`", - "Fixed brackets in `$getMessage[]`", - "Changed behaviour of `$onlyPerms[]` command", - "Added `$charCount[]`", - "Added `$clearReactions[]`", - "Added new options to `$getMessage[]`", - "Fixed adding slowmode when using `$modifyChannel[]`", - "Added `$checkContains[]`", - "Added `$addEmoji[]`", - "Fixed the bug with `$` command prefix and `$noMentionMessage`", - "Added `$unbanID[]`", - "Added `$hasRole[]`", - "Optimized the leaderboard commands", - "Fixed permissions in some commands", - "Fixed `$onlyPerms[]`", - "Fixed the bug with `$` command prefix and `$message`" - ], - "february": [ - "Fixed errors in `$addField`", - "Added `$serverRegion`", - "Added `$serverOwner`", - "Added `$emoteCount`", - "Added `$isMentionable[]`", - "Added `$isHoisted[]`", - "Added `$serverIcon[]`", - "Fixed suppressing errors in some variable commands", - "Fixed bug with `$replaceText[]` inside `$description`", - "Added `$isValidHex[]`", - "Added `$isAdmin[]`", - "`$userID[]` does not require discriminator now", - "Added `$serverVerificationLvl`", - "Fixed stopping command when `$changeUsernameWithID[]` or `$changeUsername[]` throws an exception", - "Added `$modifyRolePerms[]`", - "Added `$isUserDMEnabled[]`", - "Added new option to `$mentioned[]`", - "When `userID` is not provided in `$discriminator[]`, the author's ID will be used", - "Added `$argCount[]`", - "Added `$roleExists[]` and `$roleExists[]` ", - "Added `$varExistError[]`", - "Removed permissions check for `$kick[]` function", - "Fixed brackets issue in `$message` and `$noMentionMessage`", - "Fixed `$globalUserLeaderboard[]`", - "`$repeatMessage[]` won't send an error when there is `0` provided" - ], - "january": [ - "Final premium preparations", - "Space commands for premium bots", - "Added `sendChannelMessage()` to JS", - "Added `$isNumber[]`", - "Better description for` $replaceText[]`", - "Removed `#` from `$getRoleColor[]`", - "Added possibility of adding custom error message to `$suppressErrors[]`", - "Added `$embedSuppressErrors[]`", - "Added `$getServerVar[]` in command's name for premium bots", - "Added custom separators to `$numberSeparator[]`", - "Fixed issue with `+` and `-` in `$numberSeparator[]`", - "iOS release", - "Added `$isBot[]`", - "Added `userID` option to `$takeRole[]`", - "Fixed problems with timezones", - "`@everyone` role shows up now when it's a highest/lowest role in `$highestRole/$lowestRole`", - "`@everyone` role now works in `$rolePosition[]`", - "Added multi-line support for `$replaceText[]`", - "Fixed no errors in `$roleID[]`", - "Added `$toUppercase[]` and `$toLowercase[]`", - "Added `roleID` and `userID` to `$modifyChannelPerms[]`", - "Added `$authorOfMessage[]`", - "Added `$userID[]`", - "Improved servers response time by over 10x", - "Fixed issues with `$setServerVar[]` and `$setUserVar[]`", - "Added multi-line support for `$textSplit[]`", - "Fixed brackets in `$username`" - ] - }, - "2019": { - "december": [ - "Fixed high ping issues", - "Fixed whole bunch of other issues", - "Added to JS:", - "- authorId", - "- channelId", - "- userMentions", - "- roleMentions", - "- unban()", - "- takeRole()", - "- giveRole()", - "- channelTyping()", - "- createChannel()", - "- removeChannel()", - "- unpinMessage()", - "- banWithReason()", - "- kickWithReason()", - "- removeRole()", - "- createRole()", - "Created status website ", - "Web version of *Bot Designer for Discord* has been moved to new address ", - "Fixed some issues in web version", - "Fixed `$banID[]`", - "Preparations for premium points" - ], - "november": [ - "Added `$rolePosition[]`", - "Released translation strings to volunteers", - "Added `kick()` and `ban()` to JS", - "Released new stable version" - ] - } +{ + "2026": { + "january": [ + "Added `$addTextDisplay[]`", + "Added `$addSeparator[]`", + "Added `$addContainer[]`", + "Added `$addSection[]`", + "Added `$addThumbnail[]`", + "Added `$addMediaGallery[]`", + "Added `$addMediaGalleryItem[]`", + "Added `$addActionRow[]`", + "Added `$addButtonCV2`", + "Added `$addMentionableSelect`", + "Added `$getMentionableSelectUserID`", + "Added `$getMentionableSelectUserIDs`", + "Added `$getMentionableSelectUserCount`" + ] + }, + "2025": { + "january": [ + "Added `$afkChannelID`", + "Added `$afkTimeout[]`", + "Added `$boostLevel`", + "Added `$byteCount[]`", + "Added `$commandFolder`", + "Added `$commandName`", + "Added `$commandTrigger`", + "Added `$emojiExists[]`", + "Added `$emojiName[]`", + "Added `$getAttachments[]`", + "Added `$getSlowmode[]`", + "Added `$guildBanner[]`", + "Added `$isEmojiAnimated[]`", + "Added `$isMessageEdited[]`", + "Added `$lastMessageID`", + "Added `$lastPinTimestamp`", + "Added `$linesCount[]`", + "Added `$messageEditedTimestamp[]`", + "Added `$rolePerms[]`", + "Added `$rulesChannelID[]`", + "Added `$systemChannelID`", + "Added `$threadMessageCount`", + "Added `$threadUserCount`", + "Added `$voiceUserLimit[]`" + ] + }, + "2024": { + "august": [ + "Added `$log[]`", + "Added `$logQuota`", + "Added `$suppressErrorLogging`", + "Added `$ceil[]`", + "Added `$floor[]`", + "Added `$sqrt[]`", + "Added `$isInteger[]`" + ], + "july": [ + "Added `$isBooster[]`", + "Added `$setUserRoles[]`", + "Added `$getLeaderboardPosition[]`" + ], + "june": ["Added `$ai[]`", "Added `$aiQuota`"], + "march": [ + "Fixed the bot sometimes duplicating its answer", + "Fixed `$onlyForIDs[]` not working correctly on big nodes" + ] + }, + "2023": { + "june": [ + "Fixed custom images not always being displayed", + "Allowed for empty string values in `$jsonSetString[]`", + "Added `$jsonArraySort[]`", + "Added `$jsonArrayReverse[]`", + "JSON Array function now can interact with JSON root", + "Emoji argument now allows for emoji aliases", + "Added `$nodeVersion[]`", + "Added `$removeEmoji[]`", + "Added `$addMessageReactions[]`", + "Fixed `$nickname[]` to work with the new Discord username system", + "Added `$displayName[]`", + "Added `$userBadges[]`", + "Added `$userBannerColor[]`" + ], + "may": ["Fixed `$min[]` and `$max[]` not working with floats"], + "april": ["Fixed caching timeout information"], + "march": [ + "Fixed callbacks not always getting detected", + "Fixed JSON functions inability to correctly return an object", + "Fixed `$jsonArrayPop[]` and `$jsonArrayShift[]` only working once on an array", + "Fixed a bug where `$jsonArrayPop[]` and `$jsonArrayShift[]` would stop execution when trying to operate on an empty array", + "Fixed `$round[]` adding trailing zeros", + "Added `$removeAllComponents`" + ], + "february": [ + "Fixed caching issues for leaderboards", + "Added `$jsonArrayShift[]`", + "Added `$jsonArrayUnshift[]`", + "Added `$jsonArrayPop[]`", + "Added `$jsonJoinArray[]`" + ], + "january": [ + "Added `$jsonParse[]`", + "Added `$jsonClear`", + "Added `$jsonStringify`", + "Added `$jsonPretty[]`", + "Added `$json[]`", + "Added `$jsonExists[]`", + "Added `$jsonSet[]`", + "Added `$jsonArray[]`", + "Added `$jsonArrayAppend[]`", + "Added `$jsonArrayCount[]`", + "Added `$jsonUnset[]`", + "Added `$disableInnerSpaceRemoval`", + "Fixed big numbers not working in leaderboard functions", + "Added Emoji argument type", + "Added `$isTicket[]`", + "Added `$userBanner[]`", + "Added `$randomGuildID`", + "Added `$randomRoleID[]`", + "Added `$randomCategoryID[]`", + "Added `$channelNames[]`", + "Added `$categoryChannels[]`", + "Fixed `$allowUserMentions[]` not working on slash commands", + "Fixed `$addTextInput[]` not working with empty values", + "Added `$jsonSetString[]`", + "Added `$jsonArrayIndex[]`" + ] + }, + "2022": { + "december": [ + "Added limit on input numbers to 2128 on the basic math functions", + "Fixed BDScript 2 having problems with handling unicode characters", + "Fixed `$stop` causing undefined behaviour", + "Added `$getBanReason[]`", + "Fixed caching issues for the text splitting functions", + "Fixed issues with custom images" + ], + "november": [ + "Deprecated `$userJoinedDiscord[]` in favor of `$creationDate[]`", + "Added `Format` argument to `$creationDate[]`", + "Added `$editSplitText[]`", + "Added `$serverEmojis[]`", + "Added `$setChannelVar[]`", + "Added `$getChannelVar[]`", + "Added `$resetChannelVar[]`", + "Added `channel` option to `$variablesCount[]`", + "Fixed BDScript 2's escaping not working in some cases" + ], + "october": [ + "Added `$publishMessage[]`", + "Made `$useChannel[]` work with message components", + "Added `$channelPosition[]`", + "Added `$categoryID`", + "Added `$varExists[]`", + "Added `$boostCount`", + "Added `$categoryCount`", + "Added `$isTimedOut[]`", + "Added `stage` and `forum` channel types to `$createChannel[]`", + "Added `stage`, `announcement`, and `forum` channel types to `$channelType[]`", + "`$enableDecimals[]` now works with `$calculate[]`", + "Added `$getCustomStatus[]`", + "Added `$httpStatus`", + "Added `$httpGetHeader[]`", + "Added `$botOwnerID`", + "Added `$repliedMessageID`", + "Fixed the guild list fetching issue", + "Added `$parentID`" + ], + "september": [ + "Added `channelID` field to `$awaitFunc[]`", + "Added `$trimContent`", + "Fixed fetching guilds not always working in the app", + "Added `$slashID`", + "Fixed slash command reordering", + "Added intent autodetection ", + "Added `globaluser` option to `$variablesCount[]`", + "Added support for big numbers in the math functions", + "Added new text tutorial", + "Fixed `$checkUserPerms[]` ignoring channel permissions", + "Fixed `$addReactions[]` not working on slash commands", + "Fixed `Ticket number` argument not working in `$newTicket[]`", + "Fixed `$httpAddHeader[]`", + "Fixed some callbacks not being detected as callbacks", + "Fixed attachments not working in slash commands" + ], + "august": [ + "Added `$scriptLanguage`", + "Fixed `$stop` breaking `$if[]`", + "Renamed `$customImage[]` argument to `Custom image tag`", + "Added `$hypesquad[]`", + "Added `$dmChannelID[]`", + "Fixed the app's max choices limit", + "Fixed `$registerGuildCommands[]` removing previously registered commands", + "Fixed `$reply` not working in DMs", + "Made it possible to return milliseconds and nanoseconds in `$getTimestamp[]`", + "Fixed `$addTextInput[]` not verifying max length", + "Fixed `$url[]` returning an error when no input was provided", + "Added `$userServerAvatar[]`", + "Fixed `$cropText[]` not supporting unicode", + "Not putting required slash command options on top no longer breaks the commands" + ], + "july": [ + "Added hex to the color picker", + "Fixed `$executionTime` not working inside embed fields", + "App now sends notification when bot hosting is expired", + "Added `$sendNotification[]` for premium bots", + "Made it possible to use only one option in a select menu", + "Fixed `$editChannelPerms[]`", + "Fixed verification of slash command names", + "Fixed `$sort` not working with `-1` as return amount" + ], + "june": [ + "Fixed `$onlyBotChannelPerms[]`", + "Fixed description verification in `$addSelectMenuOption[]` and `$editSelectMenuOption[]`", + "Updated limits of select menu options", + "Fixed updating components which are refering to `$messageID`" + ], + "may": [ + "Fixed token issues", + "Fixed disappearing slash command options", + "`AllowedMentions` field is now used in `$channelSendMessage[]`, `$sendEmbedMessage[]` and `$sendMessage[]`", + "Fixed black screen after bot creation", + "Fixed in-app tutorial", + "Fixed escaping response in interactions", + "Fixed cooldown error messages", + "Fixed empty values in variables not getting saved", + "Fixed userID being ignored when guildID is passed to `$getUserVar[]`" + ], + "april": [ + "Added `'return ID of the ticket message'` argument to `$newTicket[]`", + "Fixed disappearing slash commands from the app's state" + ], + "march": [ + "Added `$toTitleCase[]`", + "Fixed invite permission calculator", + "Fixed `$suppressErrors[]` and `$embedSuppressErrors[]` getting ignored by components errors", + "Fixed updating some components", + "Added `$registerGuildCommands[]`", + "Added `$unregisterGuildCommands[]`", + "Added `/callback_list`, `/callback_tag_list`, and `/callback/:callback_tag` endpoints to public BDFD API" + ], + "february": [ + "`$httpResult[]` can return JSON now", + "Fixed `$httpResult[]` not working with multiple requests", + "Saving a command in the webapp no longer restarts the bots", + "Optimized slash commands resynchronization", + "Fixed custom images not working after saving a command", + "Made it possible to escape backslash by using `\\`", + "Removed user permission check for `$ban[]`, `$banID[]`, `$unban[]` and `$unbanID[]`", + "Added `$newModal[]`", + "Added `$addTextInput[]`", + "Added `$input[]`", + "Deprecated `$channelIDFromName[]`, use `$channelID[]` instead", + "Added `$onlyForCategories[]`", + "Fixed `$modifyChannelPerms[]` ignoring last permission", + "Added `$onAutoComplete[]` callback", + "Added `$autoCompleteOptionName`", + "Added `$autoCompleteOptionValue`", + "Added `$appendOptionSuggestion[]`" + ], + "january": [ + "Added `$unescape[]`", + "Added a neutral permission (`/`) to `$modifyChannelPerms[]`", + "Added stop bot button in the app", + "Added restart bot button in the app", + "Added `$editChannelPerms[]` (replacement for the deprecated `$modifyChannelPerms[]`)", + "Added `$roleGrant[]` (replacement for the deprecated `$giveRole[]` and `$takeRole[]`)", + "Fixed component functions inside `$async[]` scope", + "Increased the limit of http functions in one command to `5`", + "Fixed `$userPerms[]`", + "Fixed some bugs regarding math commands", + "Added public BDFD API", + "Added `$serverDescription[]`" + ] + }, + "2021": { + "december": [ + "Saving a command no longer causes the bot to restart", + "Fixed `$noMentionMessage[]` in BDScript 2", + "Added `$timeout[]` and `$untimeout[]`", + "`$mute[]` and `$unmute[]` has been marked as deprecated", + "Added `guildID` argument to `$getUserVar[]` and `$setUserVar[]`", + "Fixed the issue with some bots not starting with invalid intents enabled", + "Fixed the role cache", + "Slash command's option description is now required", + "Added `$shardID[]`", + "Added sharding", + "Improved interaction handling", + "Added `$defer`", + "Fixed getting invites", + "Added debug information inside the app for translators", + "Fixed `$serverNames`", + "Added `%` *(modulo)* to `$calculate[]`", + "Fixed removing custom images", + "Added missing permissions", + "Fixed unintentional server restarts", + "The last argument in `$replaceText[]` is now optional" + ], + "november": [ + "Added `$reply[]`", + "Added `$trimSpace[]`", + "Added `$url[]`", + "Upgraded the database", + "Sped up the node starting time", + "Added `$botCommands[]`", + "Added `$unpinMessage[]`", + "Added `$pinMessage[]`", + "Fixed `$isUserDMEnabled[]` not returning false in some cases", + "`$addReactions[]` now works in slash commands", + "`$dm[]` now can dm to more than one mention and can be used multiple times", + "`$dm` now can be used with `$dm[]`", + "`$random[]` now can use decimals", + "Added `$'randomChannelID` (BDScript Unstable only)", + "Fixed `$textSplit[]` removing space" + ], + "october": [ + "Added `$deleteMessage[]`", + "Added `$hostingExpireTime[]`", + "Added timestamp option to `$premiumExpireTime`", + "Fixed `$isUserDMEnabled[]`", + "Fixed `image` parameter in `$sendEmbedMessage[]` and `$webhookSend[]`", + "Fixed caching issue for `$serverIcon`", + "Made it possible to use empty labels in the buttons", + "New UI", + "Added search bar in the variables section", + "Made it possible to use `https://youtu.be/` URL in the streaming statuses", + "Added `$getTextSplitIndex[]`", + "Added `$serverChannelExists[]`", + "Fixed `$changeUsername[]` and `$changeUsernameWithID[]` not working on the current bot", + "Made `$ephemeral` work with the buttons", + "Fixed global variables not getting saved", + "Fixed `$deletecommand` not getting catched by `$try` block", + "Made it possible to open function's wiki article from the functions list" + ], + "september": [ + "Updated ToS", + "Fixed `$executionTime` not working in embeds", + "Added `$botNode`", + "Added `$isBanned[]`", + "Fixed a problem with `$charCount[]` having problems with unicode", + "Added `$channelType[]`", + "Added `$async[]` block function and `$endasync`", + "Added `$await[]`", + "Added `$sort[]`", + "Added `$userPerms[]`", + "Added `$serverNames[]`", + "Improved variables lookup time" + ], + "august": [ + "Added `$webhookTitle[]`", + "Added `$webhookDescription[]`", + "Added `$webhookFooter[]`", + "Added `$webhookContent[]`", + "Added `$webhookUsername[]`", + "Added `$webhookAvatarURL[]`", + "Added `$webhookCreate[]`", + "Removed permission check from `$deleteChannelsByName[]`", + "Removed permission check from `$deleteChannels[]`", + "Removed permission check from `$createChannel[]`", + "Fixed the issue with bots not working in threads", + "Added `$startThread[]`", + "Added `$webhookColor[]`", + "Fixed optional field in `$getServerVar[]`", + "Fixed floating points in `$onlyIf[]` conditions", + "Added `$webhookDelete[]`", + "Added `$webhookSend[]`", + "Removed permission check from `$modifyChannelPerms[]`", + "Made it possible to use multiple `$onInteraction[]`s", + "Added `$onInteraction` callback (without `[]`)", + "Added `$customID`", + "Made it possible to use different scripting languages in callbacks", + "Added `$editThread[]`", + "Added `$threadAddMember[]`", + "Added `$threadRemoveMember[]`", + "Added `$getEmbedData[]`", + "Made it possible to use block functions (`$if[]`, `$try`, etc.) inside function arguments in BDScript 2", + "Fixed preprocessor failures in some corner cases in BDScript 2", + "Fixed a bug with block-functions adding extra new line in BDScript 2", + "Fixed and optimised `$setVar[]`", + "Added `$sendEmbedMessage[]`", + "Fixed condition parsing in `$if[]` for the normal BDScript and BDScript Unstable (BDScript 2 didn't have any issues)", + "Made command saving faster" + ], + "july": [ + "Added `$getTimestamp`", + "Added support for decimals in the math functions", + "Added `$newSelectMenu[]`", + "Added `$addSelectMenuOption[]`", + "Added `$editSelectMenu[]`", + "Added `$editSelectMenuOption[]`", + "Added `$removeComponent[]`", + "Added `$calculate[]`", + "Added `$round[]`", + "Added `$enableDecimals[]`", + "Added `$nickname`", + "Added row and column information in BDScript 2 errors", + "Fixed an issue with BDScript 2 not requiring `]`", + "Adjusted the optimizer in BDScript 2", + "Added `$onlyForRoleIDs[]`", + "Added `$getCooldown[]`", + "Fixed problems with `]` in some functions", + "Fixed component functions inside `$eval[]` function", + "Fixed minor bugs inside BDScript 2 parser", + "Fixed author ID not showing up in `$mentioned[..;yes]`", + "Fixed `$serverNames` which removed two last characters", + "Fixed `$addTimestamp[]` when used for multiple embeds", + "Added limits for the `$round[]` function *(max decimal place)*", + "Added `$and[]`", + "Added `$or[]`", + "Added `$allowRoleMentions[]`", + "Added `$allowUserMentions[]`", + "Added `$guildExists[]`", + "Fixed `$serverVerificationLvl`" + ], + "june": [ + "Fixed `$sendMessage[]` not working in normal BDScript", + "Fixed `$checkUserPerms[]`", + "Added BDScript 2 script language", + "Added to BDScript 2:", + "- `$try`, `$catch` and `$error`", + "- `$eval[]`", + "- `$optOff[]`", + "- `$stop[]`", + "- `$var[]`", + "Added customizable code highlighting", + "Fixed `$lowestRole` and `$highestRole`", + "Added `$isBoolean[]`", + "Made it possible to add 5 buttons per row", + "Added optional field `return type` to `$getLeaderboardValue[]`", + "Added `$deleteRole[]`", + "Added `$ephemeral`", + "Added `$elseif[]` to BDScript 2", + "Fixed URL in buttons", + "Fixed buttons in DMs", + "Fixed problems with custom prefixes", + "Added `$getUserStatus[]`", + "Added `$min[]`", + "Added `$max[]`", + "Fixed `$customEmoji[]`", + "Made it possible to edit embeds in `$editMessage[]`", + "Added support for multiple embeds", + "Added `$httpAddHeader[]`", + "Added `$httpRemoveHeader[]`" + ], + "may": [ + "Fixed a bug which allowed executing certain types of callbacks as normal commands", + "Fixed member caching issue", + "Fixed caching bots", + "Fixed changing tokens in the webapp", + "Fixed `$isUserDMEnabled[]`", + "Added `$addButton[]`", + "Added `$editButton[]`", + "Added `$removeButtons` and `$removeButtons[]`", + "Added `$onInteraction[]` callback", + "Fixed some issues with slash commands", + "Added `$c[]`" + ], + "april": [ + "Added `$httpGet[]`, `$httpPost[]`, `$httpPut[]`, `$httpDelete[]` and `$httpPatch[]`", + "Improved overall caching", + "Added `$httpResult[]`", + "Made command execution faster" + ], + "march": [ + "Added `$cropText[]`", + "Added `userID` field to `$awaitFunc[]`", + "Fixed removing normal commands and slash commands", + "Added `$removeLinks[]`", + "Made returning authorID optional in `$findUser[]`", + "Added `$slowmode[]`", + "Added `$checkUserPerms[]`", + "Added `$isNSFW[]`", + "Fixed setting NSFW in `$modifyChannel[]`", + "Fixed `$userJoined[]` and `$userJoinedDiscord[]`", + "Added `$editMessage[]`", + "Fixed caching for new members.", + "Added `$slashCommandsCount`", + "Added `$botID`", + "Added more permissions:", + "- `AttachFiles`", + "- `TTS`", + "- `ManageWebhooks`", + "- `EmbedLinks`", + "- `ExternalEmojis`", + "Added `$serverCooldown[]`", + "Fixed an issue with not expiring app bans", + "Fixed some issues with `[` and `]`", + "Fixed problems with slash commands and cooldowns" + ], + "february": [ + "Added `$sendMessage[]`", + "Added `$reply`", + "Added slash commands", + "Fixed mentions in `$findChannel[]`", + "Improved performance in the command interpreter", + "Optimized reaction handlers", + "Added `$isSlash`", + "Added new optional field to `$message[]`", + "Fixed semicolons in `$channelSendMessage[]`" + ], + "january": [ + "Fixed a problem with statuses not showing up", + "Fixed an issue with mentions not working", + "Fixed loading bots from database", + "Increased duration to 40 minutes for `$deleteIn[]`, `$editIn[]`, `$editEmbedIn[]`, `$replyIn[]`", + "Added if statements (`$if[]`, `$else`, `$endif`)", + "GuildID is now returned instead of `everyone` in `$lowestRole[]` and `$highestRole[]`", + "Space commands have been removed (you can still use `$alwaysReply`)", + "Added `$channelTopic[]`", + "Fixed issues with streaming status", + "Fixed the issue with tags/discriminators not working for `$userID[]` and `$findUser[]` ", + "Added `$findChannel[]` and `$channelExists[]`", + "Added `$userJoined[]` and `$userJoinedDiscord[]`" + ] + }, + "2020": { + "december": [ + "Timezones in `$time[]` has been fixed", + "Updated Discord API version", + "Added Competing presence", + "Added `$botLeave[]`", + "Fix for `$getLeaderboardValue[]`", + "Added `userID` option to `$resetUserVar`", + "Added `serverID` option to `$serverOwner`", + "Added `$premiumExpireTime`" + ], + "november": [ + "Fixed disappearing bot status", + "Fixed `$serverCount` in bot status", + "Improved caching", + "Functions that require privileged intents are now marked accordingly", + "Added `$getLeaderboardValue[]`", + "Added `$awaitReactions[]`", + "Awaited commands are now available for everyone", + "Added awaited reactions", + "Fixed problems with DMs" + ], + "october": [ + "Optimized memory usage", + "Added member and presence intents", + "Added `$editEmbedIn[]`", + "Added `serverID` field to server variables", + "Allowed using awaited functions in awaited commands", + "Fixed leaderboards", + "Fixed `$randomMention`, `$randomUser` and `$randomUserID`", + "Added `$awaitReactions[]` for premium bots", + "Added `$usedEmoji`", + "`$deletecommand` sends an error now", + "Fixed `$serverVerificationLvl` not working on very high verification servers", + "Fixed reconnecting bots to gateway" + ], + "september": [ + "Added `$ignoreTriggerCase` for premium bots", + "Fixed caching guilds", + "`$findUser[]` & `$findRole[]` are no longer case sensitive", + "`$findUser[]` returns authorID if no user found", + "Added awaited commands for premium bots", + "Fixed weird brackets in embeds", + "Added trigger list in the app" + ], + "august": [ + "Migrated to the new infrastructure (new database and API)", + "Premium released", + "Fixed `$isMentionable[]`", + "Fixed `$isHoisted[]`", + "Added `$removeSplitTextElement[]`", + "`$userAvatar[]` no longer stops code execution", + "Fixed `$argCount[]`", + "Added `$findUser[]`", + "Added `$findRole[]`", + "Added `$disableSpecialEscaping`" + ], + "july": [ + "Renamed `$splitText[]` to `$getSplitText[]` to avoid confusion _(`$splitText[]` still works)_", + "Added `$joinSplitText[]`", + "Added `$getInviteInfo[]`", + "Added `$guildID[]`", + "Fixed `$numberSeparator[]` in the bot's status", + "`$roleID[]` and `$channelID[]` no longer stop code execution", + "Enabled BDScript Unstable for callbacks", + "Added `$getTextSplitLength`" + ], + "june": [ + "Fixed `$getReactions[]` in BDScript Unstable", + "Fixed bracket escaping for some commands in BDScript Unstable", + "Fixed `$modifyChannel[]` (random slowmodes added on channels)" + ], + "may": [ + "Fixed `$onlyBotPerms[]`", + "Bot Designer List Open Beta", + "Added `$botListDescription[]` and `$botListHide`", + "Fixed brackets issue in `$serverNames`", + "Other bug fixing for Bot Designer and Bot Designer List" + ], + "april": [ + "Fixed `$serverIcon`", + "Added `$changeCooldownTime[]`", + "Disabled `$randomUserID`, `$'randomUserID`, `$deleteIn` and `$dm` in `$onMessageDelete`", + "Fixed `$addField[]`", + "Added error message in `$getServerVar[]` when provided variable does not exist", + "Fixed `$userID[]` to not stop code execution, if user is not found", + "Added `$botLeave`", + "Removed permission check from `$clear` command.", + "Fixed `$isAdmin[]`" + ], + "march": [ + "Added `$getReactions[]` and `$userReacted[]`", + "New command interpreter", + "Added to new parser:", + "- `$'random[]` and `$'random`", + "- `$'randomText[]`", + "- `$'randomUser`", + "- `$'randomMention`", + "- `$'randomUserID`", + "- `$'randomString[]`", + "Fixed brackets in `$getMessage[]`", + "Changed behaviour of `$onlyPerms[]` command", + "Added `$charCount[]`", + "Added `$clearReactions[]`", + "Added new options to `$getMessage[]`", + "Fixed adding slowmode when using `$modifyChannel[]`", + "Added `$checkContains[]`", + "Added `$addEmoji[]`", + "Fixed the bug with `$` command prefix and `$noMentionMessage`", + "Added `$unbanID[]`", + "Added `$hasRole[]`", + "Optimized the leaderboard commands", + "Fixed permissions in some commands", + "Fixed `$onlyPerms[]`", + "Fixed the bug with `$` command prefix and `$message`" + ], + "february": [ + "Fixed errors in `$addField`", + "Added `$serverRegion`", + "Added `$serverOwner`", + "Added `$emoteCount`", + "Added `$isMentionable[]`", + "Added `$isHoisted[]`", + "Added `$serverIcon[]`", + "Fixed suppressing errors in some variable commands", + "Fixed bug with `$replaceText[]` inside `$description`", + "Added `$isValidHex[]`", + "Added `$isAdmin[]`", + "`$userID[]` does not require discriminator now", + "Added `$serverVerificationLvl`", + "Fixed stopping command when `$changeUsernameWithID[]` or `$changeUsername[]` throws an exception", + "Added `$modifyRolePerms[]`", + "Added `$isUserDMEnabled[]`", + "Added new option to `$mentioned[]`", + "When `userID` is not provided in `$discriminator[]`, the author's ID will be used", + "Added `$argCount[]`", + "Added `$roleExists[]` and `$roleExists[]` ", + "Added `$varExistError[]`", + "Removed permissions check for `$kick[]` function", + "Fixed brackets issue in `$message` and `$noMentionMessage`", + "Fixed `$globalUserLeaderboard[]`", + "`$repeatMessage[]` won't send an error when there is `0` provided" + ], + "january": [ + "Final premium preparations", + "Space commands for premium bots", + "Added `sendChannelMessage()` to JS", + "Added `$isNumber[]`", + "Better description for` $replaceText[]`", + "Removed `#` from `$getRoleColor[]`", + "Added possibility of adding custom error message to `$suppressErrors[]`", + "Added `$embedSuppressErrors[]`", + "Added `$getServerVar[]` in command's name for premium bots", + "Added custom separators to `$numberSeparator[]`", + "Fixed issue with `+` and `-` in `$numberSeparator[]`", + "iOS release", + "Added `$isBot[]`", + "Added `userID` option to `$takeRole[]`", + "Fixed problems with timezones", + "`@everyone` role shows up now when it's a highest/lowest role in `$highestRole/$lowestRole`", + "`@everyone` role now works in `$rolePosition[]`", + "Added multi-line support for `$replaceText[]`", + "Fixed no errors in `$roleID[]`", + "Added `$toUppercase[]` and `$toLowercase[]`", + "Added `roleID` and `userID` to `$modifyChannelPerms[]`", + "Added `$authorOfMessage[]`", + "Added `$userID[]`", + "Improved servers response time by over 10x", + "Fixed issues with `$setServerVar[]` and `$setUserVar[]`", + "Added multi-line support for `$textSplit[]`", + "Fixed brackets in `$username`" + ] + }, + "2019": { + "december": [ + "Fixed high ping issues", + "Fixed whole bunch of other issues", + "Added to JS:", + "- authorId", + "- channelId", + "- userMentions", + "- roleMentions", + "- unban()", + "- takeRole()", + "- giveRole()", + "- channelTyping()", + "- createChannel()", + "- removeChannel()", + "- unpinMessage()", + "- banWithReason()", + "- kickWithReason()", + "- removeRole()", + "- createRole()", + "Created status website ", + "Web version of *Bot Designer for Discord* has been moved to new address ", + "Fixed some issues in web version", + "Fixed `$banID[]`", + "Preparations for premium points" + ], + "november": [ + "Added `$rolePosition[]`", + "Released translation strings to volunteers", + "Added `kick()` and `ban()` to JS", + "Released new stable version" + ] + } } - - From d446ae65df69facea1c4c7733582cd0cc9e53f56 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 23:49:55 +0300 Subject: [PATCH 1006/1179] Update CHANGELOG.json --- external/CHANGELOG.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/external/CHANGELOG.json b/external/CHANGELOG.json index cd9e08e2dce..7a35ea74912 100644 --- a/external/CHANGELOG.json +++ b/external/CHANGELOG.json @@ -9,11 +9,11 @@ "Added `$addMediaGallery[]`", "Added `$addMediaGalleryItem[]`", "Added `$addActionRow[]`", - "Added `$addButtonCV2`", - "Added `$addMentionableSelect`", - "Added `$getMentionableSelectUserID`", - "Added `$getMentionableSelectUserIDs`", - "Added `$getMentionableSelectUserCount`" + "Added `$addButtonCV2`", + "Added `$addMentionableSelect`", + "Added `$getMentionableSelectUserID`", + "Added `$getMentionableSelectUserIDs`", + "Added `$getMentionableSelectUserCount`" ] }, "2025": { @@ -719,4 +719,4 @@ "Released new stable version" ] } -} +} \ No newline at end of file From 5979f1b6ee9bb0edd6378efc76283c9cce7ce891 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Sun, 18 Jan 2026 23:52:26 +0300 Subject: [PATCH 1007/1179] Update foreword.md --- src/foreword.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foreword.md b/src/foreword.md index 50bdd2f1809..9cec3cd07e0 100644 --- a/src/foreword.md +++ b/src/foreword.md @@ -2,7 +2,7 @@

    Bot Designer For Discord

    -

    Build powerful Discord bots without coding experience.

    +

    Build powerful Discord bots without coding experience.

    -
    -
    -
    - -## Functions -Here are all the functions related to hex colors. - -```admonish note -You can use color hex in the "Color hex" parameters. -``` - -**SET**: -- [`$addContainer[]`](../bdscript/addContainer.md) -- [`$color[]`](../bdscript/color.md) -- [`$colorRole[]`](../bdscript/colorRole.md) -- [`$createRole[]`](../bdscript/createRole.md) -- [`$editEmbedIn[]`](../bdscript/editEmbedIn.md) -- [`$editMessage[]`](../bdscript/editMessage.md) -- [`$embedSuppressErrors[]`](../bdscript/embedSuppressErrors.md) -- [`$modifyRole[]`](../bdscript/modifyRole.md) -- [`$sendEmbedMessage[]`](../bdscript/sendEmbedMessage.md) -- [`$webhookColor[]`](../bdscript/webhookColor.md) -- [`$webhookSend[]`](../bdscript/webhookSend.md) - -**GET**: -- [`$getRoleColor[]`](../bdscript/getRoleColor.md) -- [`$roleInfo[]`](../bdscript/roleInfo.md) -- [`$userBannerColor[]`](../bdscript/userBannerColor.md) - -**CHECK**: -- [`$isValidHex[]`](../bdscript/isValidHex.md) - -## Example -``` -$nomention -$description[⬅️ Border color hex] -$color[#673ab7] -``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: - embed: - description: ⬅️ Border color hex - color: "#673ab7" -``` - - -```admonish question title="What is this?" -How [`$color[]`](../bdscript/color.md) and [`$description[]`](../bdscript/description.md) works? -``` +Redirectig to https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/color.html From cf2201268362ad97cc96475782a1d1cba1c23d7c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:33:44 +0300 Subject: [PATCH 1117/1179] Update editor.md --- src/tools/editor.md | 677 +------------------------------------------- 1 file changed, 1 insertion(+), 676 deletions(-) diff --git a/src/tools/editor.md b/src/tools/editor.md index 2090c92e1ed..91e33534aac 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1,676 +1 @@ -# Text Editor -Here you can use the basic editor features to write codes more conveniently. - - - - - -
    -

    Words: 0

    -

    Spaces: 0

    -

    Lines: 0

    -

    Characters: 0

    -

    Bytes: 0

    -
    - -
    -

    Name • Command

    -
    - - 0/50 -
    -
    - - -
    -

    -

    -
    -
    - - -
    -
    - -
    -

    [0

    -

    ]0

    -

    Escaped Characters: 0

    -

    Special Characters: 0

    -
    - -
    - Editor - -
    - -
    - - - -

    Regex is supported

    -
    - -
    - -
    - Settings -
    -

    Toggles the visibility of the editor's useful buttons panel (save as file, copy text).

    - -
    -
    -
    -

    Toggles case sensitivity for the find function in the editor.

    - -
    -
    -
    -

    Disables all links on the page to avoid misclicking.

    - -
    -
    -
    -

    Displaying warnings.

    - -
    -
    -
    -

    Displaying errors.

    - -
    -
    -
    -

    Text wrapping in text editor.

    - -
    -
    -
    -

    Highlighting in text editor.

    - -
    -
    -
    -

    Suggest functions as you type.

    - -
    -
    -
    -

    Number each line.

    - -
    -
    -

    Loading...

    -
    -
    - -
    - Tips - *Italics* - **Bold** - ~~Line Through~~ - [Hyperlink Text](Link) - [BDScript 2 Hyperlink Text\](Link) -

    ### Small Header

    -

    ## Header

    -

    # Big Header

    -
    +Redirecting to https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/editor.html From e4d1dccf9764a503f0ccaed55002d47b2e541f3b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:34:22 +0300 Subject: [PATCH 1118/1179] Update color.md --- src/tools/color.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/tools/color.md b/src/tools/color.md index 47822e5c321..45e55798de8 100644 --- a/src/tools/color.md +++ b/src/tools/color.md @@ -1,3 +1,7 @@ -# Color + Redirectig to https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/color.html From ab6a7408f0bf533095ec2d891cc4107cd90e0501 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:34:34 +0300 Subject: [PATCH 1119/1179] Update editor.md --- src/tools/editor.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tools/editor.md b/src/tools/editor.md index 91e33534aac..c6b357012c1 100644 --- a/src/tools/editor.md +++ b/src/tools/editor.md @@ -1 +1,7 @@ + + Redirecting to https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/editor.html From 2d80b9497a4e566a82833b3f836171cf55c2f6c9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:34:46 +0300 Subject: [PATCH 1120/1179] Delete src/tools/permcalc.js --- src/tools/permcalc.js | 429 ------------------------------------------ 1 file changed, 429 deletions(-) delete mode 100644 src/tools/permcalc.js diff --git a/src/tools/permcalc.js b/src/tools/permcalc.js deleted file mode 100644 index 88339895fa6..00000000000 --- a/src/tools/permcalc.js +++ /dev/null @@ -1,429 +0,0 @@ -// Global Discord permissions object -const discordPermissionsList = { - 'manage_server': 32n, - 'view_audit_log': 128n, - 'view_server_insights': 524288n, - 'administrator': 8n, - 'kick_members': 2n, - 'ban_members': 4n, - 'manage_nicknames': 134217728n, - 'change_nickname': 67108864n, - 'manage_channels': 16n, - 'manage_roles': 268435456n, - 'manage_webhooks': 536870912n, - 'view_channels': 1024n, - 'send_messages': 2048n, - 'send_messages_in_threads': 274877906944n, - 'create_public_threads': 34359738368n, - 'create_private_threads': 68719476736n, - 'embed_links': 16384n, - 'attach_files': 32768n, - 'add_reactions': 64n, - 'use_external_emoji': 262144n, - 'use_external_stickers': 137438953472n, - 'mention_everyone': 131072n, - 'manage_messages': 8192n, - 'manage_threads': 17179869184n, - 'read_message_history': 65536n, - 'send_tts_messages': 4096n, - 'use_application_commands': 2147483648n, - 'connect': 1048576n, - 'speak': 2097152n, - 'video': 512n, - 'start_activities': 549755813888n, - 'use_voice_activity': 33554432n, - 'priority_speaker': 256n, - 'mute_members': 4194304n, - 'deafen_members': 8388608n, - 'move_members': 16777216n, - 'request_to_speak': 4294967296n, - 'manage_emojis_stickers': 1073741824n, - 'manage_events': 8589934592n, - 'create_invite': 1n -}; - -// Permission function to get permission value -function permission(permissionName) { - return discordPermissionsList[permissionName]; // Returns value or undefined -} - -// Category mapping for toggle functionality -const categoryMapping = { - 'general': ['manage_server', 'view_audit_log', 'view_server_insights', 'administrator'], - 'member': ['kick_members', 'ban_members', 'manage_nicknames', 'change_nickname'], - 'channel': ['manage_channels', 'manage_roles', 'manage_webhooks', 'view_channels'], - 'text': [ - 'send_messages', 'send_messages_in_threads', 'create_public_threads', - 'create_private_threads', 'embed_links', 'attach_files', 'add_reactions', - 'use_external_emoji', 'use_external_stickers', 'mention_everyone', - 'manage_messages', 'manage_threads', 'read_message_history', - 'send_tts_messages', 'use_application_commands' - ], - 'voice': [ - 'connect', 'speak', 'video', 'start_activities', 'use_voice_activity', - 'priority_speaker', 'mute_members', 'deafen_members', 'move_members', - 'request_to_speak' - ], - 'other': ['manage_emojis_stickers', 'manage_events', 'create_invite'] -}; - -// Permission values map for quick lookup -const permissionValues = new Map(); - -// Initialize permission values from HTML -function initializePermissionValues() { - // Clear the map - permissionValues.clear(); - - // Get only real permissions from our list - Object.keys(discordPermissionsList).forEach(permissionName => { - const checkbox = document.getElementById(permissionName); - if (checkbox) { - const permissionValue = discordPermissionsList[permissionName]; - const label = document.querySelector(`label[for="${permissionName}"]`); - const permissionLabel = label ? label.textContent.trim().split('\n')[0] : permissionName; - - permissionValues.set(permissionName, { - name: permissionLabel, - value: permissionValue - }); - } - }); -} - -let total = 0n; -const categoryStates = new Map(); - -// Initialize interface -function initializeInterface() { - initializePermissionValues(); - - // Initialize category states - Object.keys(categoryMapping).forEach(category => { - categoryStates.set(category, false); - }); - - // Add event handlers for checkboxes - document.querySelectorAll('input[type="checkbox"]').forEach(checkbox => { - checkbox.addEventListener('change', updateTotal); - }); - - // Add event handler for target value input - document.getElementById('targetValue').addEventListener('input', findCombinations); - - // Add event handlers for control buttons - document.getElementById('enableAll').addEventListener('click', () => toggleAllPermissions(true)); - document.getElementById('disableAll').addEventListener('click', () => toggleAllPermissions(false)); - - // Add event handlers for category toggle buttons - document.querySelectorAll('.category-toggle').forEach(button => { - button.addEventListener('click', (e) => { - const categoryId = e.target.dataset.category; - toggleCategoryPermissions(categoryId); - }); - }); - - updateTotal(); -} - -function toggleAllPermissions(enable) { - const checkboxes = document.querySelectorAll('input[type="checkbox"]'); - - // Set all checkboxes - checkboxes.forEach(checkbox => { - checkbox.checked = enable; - }); - - // Update visual state for all permission items - updateAllPermissionItemsVisualState(); - - // Update all category states - Object.keys(categoryMapping).forEach(category => { - categoryStates.set(category, enable); - }); - - updateTotal(); -} - -function updateAllPermissionItemsVisualState() { - // Update visual state for all permission items - document.querySelectorAll('.permission-item').forEach(item => { - const checkbox = item.querySelector('input[type="checkbox"]'); - if (checkbox) { - if (checkbox.checked) { - item.classList.add('checked'); - } else { - item.classList.remove('checked'); - } - } - }); -} - -function toggleCategoryPermissions(categoryId) { - const permissionIds = categoryMapping[categoryId]; - if (!permissionIds) return; - - // Get current state of the category (check if all are selected) - const allChecked = permissionIds.every(id => { - const checkbox = document.getElementById(id); - return checkbox && checkbox.checked; - }); - - const newState = !allChecked; - - // Toggle all permissions in this category - permissionIds.forEach(permissionId => { - const checkbox = document.getElementById(permissionId); - if (checkbox) { - checkbox.checked = newState; - - // Update visual state for this permission item - const permissionItem = document.querySelector(`#item-${permissionId}`); - if (permissionItem) { - if (newState) { - permissionItem.classList.add('checked'); - } else { - permissionItem.classList.remove('checked'); - } - } - } - }); - - // Update category state - categoryStates.set(categoryId, newState); - - updateTotal(); -} - -function updateTotal() { - total = 0n; - const checkboxes = document.querySelectorAll('input[type="checkbox"]:checked'); - - checkboxes.forEach(checkbox => { - // Use permission() function to get the value - const permValue = permission(checkbox.id); - if (permValue !== undefined) { - total += permValue; - } - }); - - // Update visual state for all permission items - document.querySelectorAll('.permission-item').forEach(item => { - const checkbox = item.querySelector('input[type="checkbox"]'); - if (checkbox) { - if (checkbox.checked) { - item.classList.add('checked'); - } else { - item.classList.remove('checked'); - } - } - }); - - // Update category states (without changing button colors) - Object.keys(categoryMapping).forEach(category => { - const permissionIds = categoryMapping[category]; - const allChecked = permissionIds.every(id => { - const checkbox = document.getElementById(id); - return checkbox && checkbox.checked; - }); - const anyChecked = permissionIds.some(id => { - const checkbox = document.getElementById(id); - return checkbox && checkbox.checked; - }); - - // Update category state - categoryStates.set(category, allChecked); - - // Update category toggle button text (without changing color) - const toggleButton = document.querySelector(`.category-toggle[data-category="${category}"]`); - if (toggleButton) { - if (allChecked) { - toggleButton.textContent = 'Disable All'; - } else if (anyChecked) { - toggleButton.textContent = 'Enable All'; - } else { - toggleButton.textContent = 'Enable All'; - } - } - }); - - // Update display - const totalValueElement = document.getElementById('totalValue'); - const hexValueElement = document.getElementById('hexValue'); - - if (totalValueElement) { - totalValueElement.textContent = total.toString(); - } - if (hexValueElement) { - hexValueElement.textContent = `0x${total.toString(16).toUpperCase()}`; - } - - findCombinations(); -} - -function findCombinations() { - const targetInput = document.getElementById('targetValue'); - const targetValue = targetInput.value.trim(); - const resultDiv = document.getElementById('resultContent'); - - // Get currently selected permissions - const checkedBoxes = Array.from(document.querySelectorAll('input[type="checkbox"]:checked')); - const checkedPerms = checkedBoxes.map(cb => cb.id); - const checkedSum = checkedBoxes.reduce((sum, cb) => { - const permValue = permission(cb.id); - return permValue !== undefined ? sum + permValue : sum; - }, 0n); - - // If input field is empty - if (!targetValue) { - if (checkedPerms.length > 0) { - const permNames = checkedPerms.map(id => permissionValues.get(id)?.name).filter(name => name); - resultDiv.innerHTML = ` -
    -
    Selected Permissions:
    -
      - ${permNames.map(name => `
    • ${name}
    • `).join('')} -
    -
    Total: ${checkedSum.toString()} (0x${checkedSum.toString(16).toUpperCase()})
    -
    - `; - } else { - // No permissions selected and no search value - resultDiv.innerHTML = '
    Select permissions from the list above or enter a value to find combinations
    '; - } - return; - } - - // Validate input - let targetBigInt; - try { - targetBigInt = BigInt(targetValue); - if (targetBigInt < 0n) { - resultDiv.innerHTML = '
    Value must be positive
    '; - return; - } - } catch (e) { - resultDiv.innerHTML = '
    Please enter a valid number
    '; - return; - } - - // If current sum matches target - if (checkedSum === targetBigInt && checkedPerms.length > 0) { - const permNames = checkedPerms.map(id => permissionValues.get(id)?.name).filter(name => name); - resultDiv.innerHTML = ` -
    -
    Selected permissions match target value:
    -
      - ${permNames.map(name => `
    • ${name}
    • `).join('')} -
    -
    Total: ${targetBigInt.toString()} (0x${targetBigInt.toString(16).toUpperCase()})
    -
    - `; - return; - } - - // Search for a single combination - const allPerms = Array.from(permissionValues.entries()); - let foundCombination = null; - - // Function for recursive combination search (finds first match) - function findCombinationRecursive(startIndex, currentSum, currentPerms) { - // If we found a match, stop searching - if (foundCombination) return; - - if (currentSum === targetBigInt && currentPerms.length > 0) { - foundCombination = [...currentPerms]; - return; - } - - if (currentSum > targetBigInt || currentPerms.length >= 5 || startIndex >= allPerms.length) { - return; - } - - // Search for a combination - for (let i = startIndex; i < allPerms.length; i++) { - const [id, perm] = allPerms[i]; - // Skip permissions with zero value - if (!perm.value || perm.value === 0n || perm.value === undefined) continue; - - findCombinationRecursive( - i + 1, - currentSum + perm.value, - [...currentPerms, { id, ...perm }] - ); - - // Stop if we found a combination - if (foundCombination) return; - } - } - - // Start search - findCombinationRecursive(0, 0n, []); - - // Display result - if (foundCombination) { - const sum = foundCombination.reduce((s, perm) => s + perm.value, 0n); - let resultHTML = ` -
    Found a combination for value ${targetBigInt.toString()}:
    -
    -
    Permission Combination:
    -
      - ${foundCombination.map(perm => `
    • ${perm.name} (${perm.value.toString()})
    • `).join('')} -
    -
    Total: ${sum.toString()} = ${formatBinarySum(foundCombination)}
    -
    - `; - - // Add current selection info if any permissions are selected - if (checkedPerms.length > 0) { - const permNames = checkedPerms.map(id => permissionValues.get(id)?.name).filter(name => name); - if (permNames.length > 0) { - resultHTML += ` -
    -
    Currently Selected Permissions:
    -
      - ${permNames.map(name => `
    • ${name}
    • `).join('')} -
    -
    Total: ${checkedSum.toString()} (0x${checkedSum.toString(16).toUpperCase()})
    -
    - `; - } - } - - resultDiv.innerHTML = resultHTML; - } else { - let resultHTML = `
    No permission combination found for value ${targetBigInt.toString()}
    `; - - // Only show current selection if permissions are actually selected - if (checkedPerms.length > 0) { - const permNames = checkedPerms.map(id => permissionValues.get(id)?.name).filter(name => name); - if (permNames.length > 0) { - resultHTML += ` -
    -
    Currently Selected Permissions:
    -
      - ${permNames.map(name => `
    • ${name}
    • `).join('')} -
    -
    Total: ${checkedSum.toString()} (0x${checkedSum.toString(16).toUpperCase()})
    -
    - `; - } - } - - resultDiv.innerHTML = resultHTML; - } -} - -function formatBinarySum(combination) { - let sum = 0n; - combination.forEach(perm => { - sum |= perm.value; - }); - return `0x${sum.toString(16).toUpperCase()}`; -} - -// Initialize on load -document.addEventListener('DOMContentLoaded', initializeInterface); - -// Export permission function to global scope for easy testing -window.permission = permission; \ No newline at end of file From c98141a1666bf1712ce8bc9c4a9fdd7d1e33ac94 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:35:05 +0300 Subject: [PATCH 1121/1179] Update permissionscalculator.md --- src/tools/permissionscalculator.md | 546 +---------------------------- 1 file changed, 1 insertion(+), 545 deletions(-) diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md index b135e9c6f56..46dbcd3ac70 100644 --- a/src/tools/permissionscalculator.md +++ b/src/tools/permissionscalculator.md @@ -1,551 +1,7 @@ -# Permission Calculator -Here you can use the discord permissions calculator to later use in the bot invitation link. - - - -
    - - -
    - -
    -
    -
    General Server Permissions
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    Member Management
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    Channel Management
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    Text Permissions
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    - -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    Voice Permissions
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    Other Permissions
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -

    Current Permission Value:

    -
    0
    -
    0x0
    -
    -
    - -
    -
    -

    Search Results:

    -
    - Select permissions and/or enter a value to find combinations -
    -
    -
    +Redirecting to https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/permissionscalculator.html From 696639241924fa9aa936981fa48fcd5818bc16a1 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:35:20 +0300 Subject: [PATCH 1122/1179] Update timestamp.md --- src/tools/timestamp.md | 212 +---------------------------------------- 1 file changed, 1 insertion(+), 211 deletions(-) diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md index c95431f5091..61bc2395f6a 100644 --- a/src/tools/timestamp.md +++ b/src/tools/timestamp.md @@ -1,217 +1,7 @@ -# Timestamp Converter - -Here you can manage UnixTime for your commands. - -```admonish note -Unix time is a system for tracking time by counting the number of seconds that have passed since January 1st, 1970. This value is stored as a simple integer, which computers can easily process and calculate with. For example, the function [`$getTimestamp`](../bdscript/getTimestamp.md) can be used to get the current Unix timestamp or perform time-based operations for your bot. -``` - -```admonish info -The timezone selected on your device is used as default. -``` - -
    -

    Time zone

    -

    Select timezone for time calculations

    - - -
    - -
    -

    Date to Unix Timestamp

    -

    Select a date and time:

    - -
    -

    Unix timestamp:

    - 0 -
    -
    -
    - -
    -

    Unix Timestamp to Date

    -

    Enter Unix timestamp:

    - -
    -

    Date and time:

    - Not set -
    -
    -
    - -
    -

    Time Remaining

    -

    Time until selected Unix timestamp:

    -
    - Loading... -
    -
    - -
    - -
    - -## Functions -Here are all the functions related to unix timestamp. - -**GET**: -- [`$getEmbedData[]`](../bdscript/getEmbedData.md) -- [`$getTimestamp`](../bdscript/getTimestamp.md) -- [`$getTimestamp[]`](../bdscript/getTimestampComplex.md) -- [`$hostingExpireTime`](../bdscript/hostingExpireTime.md) -- [`$hostingExpireTime[]`](../bdscript/hostingExpireTimeComplex.md) -- [`$lastPinTimestamp`](../bdscript/lastPinTimestamp.md) -- [`$messageEditedTimestamp[]`](../bdscript/messageEditedTimestamp.md) -- [`$premiumExpireTime`](../bdscript/premiumExpireTime.md) - -## Example -``` -$nomention -Unix date: -``` - -``` discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true - verified: true - content: | - Unix date:
    January 10, 2030
    -``` - -```admonish example -You can use [Discord timestamp highlighting](../resources/discordTimestamps.md) to make your code look nicer! -``` +Redirecting to https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/timestamp.html From deb7b8b47416f44f5ea3a3d29af5a490d5a3f886 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:36:12 +0300 Subject: [PATCH 1123/1179] Update playground.js --- src/theme/playground.js | 713 ---------------------------------------- 1 file changed, 713 deletions(-) diff --git a/src/theme/playground.js b/src/theme/playground.js index 21dc97429ef..ae7d5f58f5d 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -846,716 +846,3 @@ function callButtonChange(buttonName, status) { button.style.background = status ? activeGradient : inactiveGradient; } } - - - - - -// Color - -const colorNames = { - // CSS - aliceblue: "#f0f8ff", antiquewhite: "#faebd7", aqua: "#00ffff", - aquamarine: "#7fffd4", azure: "#f0ffff", beige: "#f5f5dc", - bisque: "#ffe4c4", black: "#000000", blanchedalmond: "#ffebcd", - blue: "#0000ff", blueviolet: "#8a2be2", brown: "#a52a2a", - burlywood: "#deb887", cadetblue: "#5f9ea0", chartreuse: "#7fff00", - chocolate: "#d2691e", coral: "#ff7f50", cornflowerblue: "#6495ed", - cornsilk: "#fff8dc", crimson: "#dc143c", cyan: "#00ffff", - darkblue: "#00008b", darkcyan: "#008b8b", darkgoldenrod: "#b8860b", - darkgray: "#a9a9a9", darkgreen: "#006400", darkgrey: "#a9a9a9", - darkkhaki: "#bdb76b", darkmagenta: "#8b008b", darkolivegreen: "#556b2f", - darkorange: "#ff8c00", darkorchid: "#9932cc", darkred: "#8b0000", - darksalmon: "#e9967a", darkseagreen: "#8fbc8f", darkslateblue: "#483d8b", - darkslategray: "#2f4f4f", darkslategrey: "#2f4f4f", darkturquoise: "#00ced1", - darkviolet: "#9400d3", deeppink: "#ff1493", deepskyblue: "#00bfff", - dimgray: "#696969", dimgrey: "#696969", dodgerblue: "#1e90ff", - firebrick: "#b22222", floralwhite: "#fffaf0", forestgreen: "#228b22", - fuchsia: "#ff00ff", gainsboro: "#dcdcdc", ghostwhite: "#f8f8ff", - gold: "#ffd700", goldenrod: "#daa520", gray: "#808080", - green: "#008000", greenyellow: "#adff2f", grey: "#808080", - honeydew: "#f0fff0", hotpink: "#ff69b4", indianred: "#cd5c5c", - indigo: "#4b0082", ivory: "#fffff0", khaki: "#f0e68c", - lavender: "#e6e6fa", lavenderblush: "#fff0f5", lawngreen: "#7cfc00", - lemonchiffon: "#fffacd", lightblue: "#add8e6", lightcoral: "#f08080", - lightcyan: "#e0ffff", lightgoldenrodyellow: "#fafad2", lightgray: "#d3d3d3", - lightgreen: "#90ee90", lightgrey: "#d3d3d3", lightpink: "#ffb6c1", - lightsalmon: "#ffa07a", lightseagreen: "#20b2aa", lightskyblue: "#87cefa", - lightslategray: "#778899", lightslategrey: "#778899", lightsteelblue: "#b0c4de", - lightyellow: "#ffffe0", lime: "#00ff00", limegreen: "#32cd32", - linen: "#faf0e6", magenta: "#ff00ff", maroon: "#800000", - mediumaquamarine: "#66cdaa", mediumblue: "#0000cd", mediumorchid: "#ba55d3", - mediumpurple: "#9370db", mediumseagreen: "#3cb371", mediumslateblue: "#7b68ee", - mediumspringgreen: "#00fa9a", mediumturquoise: "#48d1cc", mediumvioletred: "#c71585", - midnightblue: "#191970", mintcream: "#f5fffa", mistyrose: "#ffe4e1", - moccasin: "#ffe4b5", navajowhite: "#ffdead", navy: "#000080", - oldlace: "#fdf5e6", olive: "#808000", olivedrab: "#6b8e23", - orange: "#ffa500", orangered: "#ff4500", orchid: "#da70d6", - palegoldenrod: "#eee8aa", palegreen: "#98fb98", paleturquoise: "#afeeee", - palevioletred: "#db7093", papayawhip: "#ffefd5", peachpuff: "#ffdab9", - peru: "#cd853f", pink: "#ffc0cb", plum: "#dda0dd", - powderblue: "#b0e0e6", purple: "#800080", rebeccapurple: "#663399", - red: "#ff0000", rosybrown: "#bc8f8f", royalblue: "#4169e1", - saddlebrown: "#8b4513", salmon: "#fa8072", sandybrown: "#f4a460", - seagreen: "#2e8b57", seashell: "#fff5ee", sienna: "#a0522d", - silver: "#c0c0c0", skyblue: "#87ceeb", slateblue: "#6a5acd", - slategray: "#708090", slategrey: "#708090", snow: "#fffafa", - springgreen: "#00ff7f", steelblue: "#4682b4", tan: "#d2b48c", - teal: "#008080", thistle: "#d8bfd8", tomato: "#ff6347", - turquoise: "#40e0d0", violet: "#ee82ee", wheat: "#f5deb3", - white: "#ffffff", whitesmoke: "#f5f5f5", yellow: "#ffff00", - yellowgreen: "#9acd32", - - // Extra - absolutezero: "#0048ba", acidgreen: "#b0bf1a", aero: "#7cb9e8", - aeroblue: "#c0e8d5", africanviolet: "#b284be", airforceblue: "#5d8aa8", - airsuperiorityblue: "#72a0c1", alabamacrimson: "#af002a", alloyorange: "#c46210", - almond: "#efdecd", amaranthdeep: "#9f2b68", amaranthpink: "#f19cbb", - amaranthpurple: "#ab274f", amazon: "#3b7a57", amber: "#ffbf00", - amethyst: "#9966cc", androidgreen: "#a4c639", antiflashwhite: "#f2f3f4", - antiquebrass: "#cd9575", antiquebronze: "#665d1e", antiquefern: "#8cb06c", - antiquefuchsia: "#915c83", antiqueruby: "#841b2d", antiquewhite: "#faebd7", - aoenglish: "#008000", applegreen: "#8db600", apricot: "#fbceb1", - arcticlime: "#d0ff14", armygreen: "#4b5320", arsenic: "#3b444b", - artichoke: "#8f9779", arylideyellow: "#e9d66b", ashgray: "#b2beb5", - asparaguscra: "#87a96b", atomictangerine: "#ff9966", aureolin: "#fdee00", - aurometalsaurus: "#6e7f80", avocado: "#568203", azure: "#007fff", - azurex11: "#f0ffff", babypowder: "#fefefa", babypink: "#f4c2c2", - babypuce: "#8c8180", babysbreath: "#8c9fa8", babysblue: "#89cff0", - babysblueeyes: "#a1caf1", babypurple: "#ca9bf7", babysapphire: "#8fd8d8", - babysilver: "#838996", bakerchocolate: "#5c3317", banana: "#ffe135", - bananamania: "#fae7b5", barbiepink: "#e0218a", barnred: "#7c0a02", - battleshipgrey: "#848482", bazaar: "#98777b", beaublue: "#bcd4e6", - beaver: "#9f8170", beige: "#f5f5dc", bigdip: "#1cac78", - bisque: "#ffe4c4", bistre: "#3d2b1f", bistrebrown: "#967117", - bittersweet: "#fe6f5e", bittersweetshimmer: "#bf4f51", blackbean: "#3d0c02", - blackcoral: "#54626f", blackleatherjacket: "#253529", blackolive: "#3b3c36", - blackshadows: "#bfafb2", blanchedalmond: "#ffebcd", blastoffbronze: "#a57164", - bleudefrance: "#318ce7", blizzardblue: "#ace5ee", blond: "#faf0be", - bloodred: "#660000", blue: "#0000ff", bluebell: "#a2a2d0", - bluegray: "#6699cc", bluegreen: "#0d98ba", bluesapphire: "#126180", - blueviolet: "#8a2be2", blueyonder: "#5072a7", blueberry: "#4f86f7", - bluebonnet: "#1c1cf0", blush: "#de5d83", bole: "#79443b", - bondiblue: "#0095b6", bone: "#e3dac9", boogerbuster: "#dde26a", - bostonuniversityred: "#cc0000", bottle: "#006a4e", boysenberry: "#873260", - brandeisblue: "#0070ff", brass: "#b5a642", brickred: "#cb4154", - brightgreen: "#66ff00", brightlavender: "#bf94e4", brightlilac: "#d891ef", - brightmaroon: "#c32148", brightnavyblue: "#1974d2", brightpink: "#ff007f", - brightturquoise: "#08e8de", brightube: "#d19fe8", brightyellow: "#ffaa1d", - brilliantazure: "#3399ff", brilliantlavender: "#f4bbff", brilliantrose: "#ff55a3", - brinkpink: "#fb607f", britishracinggreen: "#004225", bronze: "#cd7f32", - bronzeyellow: "#737000", brown: "#a52a2a", brownchocolate: "#664228", - browntraditional: "#964b00", brownweb: "#a52a2a", brownsugar: "#af6e4d", - brownyellow: "#cc9966", brunswickgreen: "#1b4d3e", bubblegum: "#ffc1cc", - bubbles: "#e7feff", buff: "#f0dc82", budgreen: "#7bb661", - bulgarianrose: "#480607", burgundy: "#800020", burlywood: "#deb887", - burnishedbrown: "#a17a74", burntalmond: "#b0725e", burntorange: "#cc5500", - burntsienna: "#e97451", burntumber: "#8a3324", byzantine: "#bd33a4", - byzantium: "#702963", cadmiumgreen: "#006b3c", cadmiumorange: "#ed872d", - cadmiumred: "#e30022", cadmiumyellow: "#fff600", cafeaulait: "#a67b5b", - cafenoir: "#4b3621", calpolypomonagreen: "#1e4d2b", cambridgeblue: "#a3c1ad", - camel: "#c19a6b", camouflagegreen: "#78866b", canary: "#ffff99", - canaryyellow: "#ffef00", candyapplered: "#ff0800", candypink: "#e4717a", - capri: "#00bfff", caputmortuum: "#592720", cardinal: "#c41e3a", - caribbeangreen: "#00cc99", carmine: "#960018", carminered: "#ff0038", - carnation: "#ffa6c9", carnationpink: "#ffa6c9", carnelian: "#b31b1b", - carolinalue: "#56a0d3", carrot: "#ed9121", castletongreen: "#00563f", - catalinablue: "#062a78", catawba: "#703642", cedarchest: "#c95a49", - ceil: "#92a1cf", celadon: "#ace1af", celadonblue: "#007ba7", - celadongreen: "#2f847c", celeste: "#b2ffff", celestialblue: "#4997d0", - ceramic: "#fcfff9", cerise: "#de3163", cerisepink: "#ec3b83", - cerulean: "#007ba7", ceruleanblue: "#2a52be", ceruleanfrost: "#6d9bc3", - cetaceanblue: "#001440", chamoisee: "#a0785a", champagne: "#f7e7ce", - charcoal: "#36454f", charlotte: "#a4dce6", charm: "#d0748b", - charmpink: "#e68fac", chartreuse: "#7fff00", cherry: "#de3163", - cherryblossompink: "#ffb7c5", chestnut: "#954535", chinapink: "#de6fa1", - chinarose: "#a8516e", chineseblack: "#141414", chineseblue: "#365194", - chinesebronze: "#cd8032", chinesebrown: "#ab381f", chinesegold: "#cc9900", - chinesegreen: "#d0db61", chineseorange: "#f37042", chinesepink: "#de70a1", - chinesepurple: "#720b98", chinesered: "#aa381e", chinesesilver: "#ccd0d6", - chineseviolet: "#856088", chinesewhite: "#e2e5de", chineseyellow: "#ffb200", - chocolate: "#7b3f00", chocolatetraditional: "#7b3f00", chocolateweb: "#d2691e", - christmasblue: "#2a8fbd", christmasbrown: "#5d2b2c", christmasgreen: "#3c8d0d", - christmasgold: "#caa906", christmasorange: "#ff6600", christmaspink: "#ffcccb", - christmaspurple: "#663399", christmasred: "#aa0114", christmassilver: "#e1dfe0", - christmasyellow: "#ffcc00", chromium: "#7f8e88", cinereous: "#98817b", - cinnabar: "#e34234", cinnamon: "#d2691e", citrine: "#e4d00a", - citron: "#9fa91f", claret: "#7f1734", classicrose: "#fbcce7", - cobaltblue: "#0047ab", cocoabrown: "#d2691e", coconut: "#965a3e", - coffee: "#6f4e37", columbiablue: "#c4d8e2", congopink: "#f88379", - coolblack: "#002e63", coolgrey: "#8c92ac", copper: "#b87333", - copperpenny: "#ad6f69", copperred: "#cb6d51", copperrose: "#996666", - coquelicot: "#ff3800", coral: "#ff7f50", corald: "#ff7f50", - coralpink: "#f88379", coralred: "#ff4040", cordovan: "#893f45", - corn: "#fbec5d", cornellred: "#b31b1b", cornflowerblue: "#6495ed", - cornsilk: "#fff8dc", cosmiccobalt: "#2e2d88", cosmiclatte: "#fff8e7", - coyotebrown: "#81613c", cottoncandy: "#ffbcd9", cream: "#fffdd0", - crimson: "#dc143c", crimsonred: "#990000", cultured: "#f5f5f5", - cyan: "#00ffff", cyanazure: "#4e82b4", cyanblue: "#1e4d8c", - cyancobalt: "#28589c", cyanblueazure: "#4682bf", cyberyellow: "#ffd300", - cyclamen: "#f56fa1", daffodil: "#ffff31", dandelion: "#f0e130", - darkblue: "#00008b", darkbluegray: "#666699", darkbrown: "#654321", - darkbrowntangelo: "#88654e", darkbyzantium: "#5d3954", darkcandyapple: "#a40000", - darkcerulean: "#08457e", darkchestnut: "#986960", darkcoral: "#cd5b45", - darkcyan: "#008b8b", darkelectricblue: "#536878", darkgold: "#b59410", - darkgoldenrod: "#b8860b", darkgrayx11: "#a9a9a9", darkgreen: "#006400", - darkgreenx11: "#013220", darkgunmetal: "#1f262a", darkimperial: "#00416a", - darkjungle: "#1a2421", darkkhaki: "#bdb76b", darklava: "#483c32", - darklavender: "#734f96", darkliver: "#534b4f", darkliverhorses: "#543d37", - darkmagenta: "#8b008b", darkmediumgray: "#a9a9a9", darkmidnight: "#003366", - darkmoss: "#4a5d23", darkolive: "#556b2f", darkorange: "#ff8c00", - darkorchid: "#9932cc", darkpastel: "#03c03c", darkpink: "#e75480", - darkpowder: "#003399", darkpuce: "#4f3a3c", darkpurple: "#301934", - darkraspberry: "#872657", darkred: "#8b0000", darksalmon: "#e9967a", - darkscarlet: "#560319", darkseagreen: "#8fbc8f", darksienna: "#3c1414", - darksky: "#8cbed6", darkslate: "#483d8b", darkspring: "#177245", - darktan: "#918151", darktangerine: "#ffa812", darktaupe: "#483c32", - darkterracotta: "#cc4e5c", darkturquoise: "#00ced1", darkvanilla: "#d1bea8", - darkviolet: "#9400d3", darkyellow: "#9b870c", dartmouth: "#00693e", - davysgrey: "#555555", debianred: "#d70a53", deepamethyst: "#9c8aa4", - deepaquamarine: "#40826d", deepcarmine: "#a9203e", deepcarminepink: "#ef3038", - deepcarrot: "#e9692c", deepcerise: "#da3287", deepchampagne: "#fad6a5", - deepchestnut: "#b94e48", deepcoffee: "#704241", deepfuchsia: "#c154c1", - deepgreen: "#056608", deepgreencyanturquoise: "#0e7c61", deepjungle: "#004b49", - deepkoamaru: "#333366", deeplemon: "#f5c71a", deeplilac: "#9955bb", - deepmagenta: "#cc00cc", deepmaroon: "#820000", deepmauve: "#d473d4", - deepmoss: "#355e3b", deeppeach: "#ffcba4", deeppink: "#ff1493", - deeppuce: "#a95c68", deepred: "#850101", deepruby: "#843f5b", - deepsaffron: "#ff9933", deepsky: "#00bfff", deepspacesparkle: "#4a646c", - deepspring: "#2e8b57", deeptaupe: "#7e5e60", deeptuscan: "#66424d", - deepviolet: "#330066", deer: "#ba8759", denim: "#1560bd", - desert: "#c19a6b", desertsand: "#edc9af", desire: "#ea3c53", - diamond: "#b9f2ff", dimgray: "#696969", dirt: "#9b7653", - dodgerblue: "#1e90ff", dogwood: "#f8b1cc", dollar: "#85bb65", - donkeybrown: "#664c28", drab: "#967117", duke: "#00009c", - duststorm: "#e5ccc9", dutchwhite: "#efdfbb", earth: "#e2a76f", - ebony: "#555d50", ecru: "#c2b280", eerieblack: "#1b1b1b", - eggplant: "#614051", eggshell: "#f0ead6", eggwhite: "#ffeaa7", - egyptian: "#1034a6", electric: "#7df9ff", electricblue: "#7df9ff", - electriccrimson: "#ff003f", electriccyan: "#00ffff", electricgreen: "#00ff00", - electricindigo: "#6f00ff", electriclavender: "#f4bbff", electriclime: "#ccff00", - electricpurple: "#bf00ff", electricultramarine: "#3f00ff", electricviolet: "#8f00ff", - electricyellow: "#ffff33", emerald: "#50c878", eminence: "#6c3082", - emperor: "#51454d", empire: "#00549e", empireyellow: "#f7d000", - enamelsapphire: "#126180", enamelturquoise: "#00a78e", english: "#b48395", - englishgreen: "#1b4d3e", englishlavender: "#b48395", englishred: "#ab4b52", - englishvermillion: "#cc474b", englishviolet: "#563c5c", eton: "#96c8a2", - eucalyptus: "#44d7a8", fallow: "#c19a6b", falured: "#801818", - fandango: "#b53389", fandangopink: "#de5285", fashion: "#f400a1", - fawn: "#e5aa70", feldgrau: "#4d5d53", feldspar: "#fdd5b1", - fern: "#71bc78", ferngreen: "#4f7942", ferrari: "#ff2800", - field: "#6c541e", fieryrose: "#ff5470", fire: "#b22222", - firebrick: "#b22222", fireenginered: "#ce2029", flame: "#e25822", - flamingo: "#fc8eac", flattery: "#6b4423", flavescent: "#f7e98e", - flax: "#eedc82", flirt: "#a2006d", floral: "#fffaf0", - fluorescentorange: "#ffbf00", fluorescentpink: "#ff1493", fluorescentyellow: "#ccff00", - folly: "#ff004f", forest: "#228b22", french: "#a67b5b", - frenchbeige: "#a67b5b", frenchbistre: "#856d4d", frenchblue: "#0072bb", - frenchfuchsia: "#fd3f92", frenchlilac: "#86608e", frenchlime: "#9efd38", - frenchmauve: "#d473d4", frenchpink: "#fd6c9e", frenchplum: "#811453", - frenchpuce: "#4e1609", frenchraspberry: "#c72c48", frenchrose: "#f64a8a", - frenchsky: "#77b5fe", frenchviolet: "#8806ce", frenchwine: "#ac1e44", - freshair: "#a6e7ff", fuchsia: "#ff00ff", fuchsiapink: "#ff77ff", - fuchsiapurple: "#cc397b", fuchsiarose: "#c74375", fulvous: "#e48400", - fuzzy: "#cc6666" -}; - -function colorPickerChange() { - const colorPicker = document.getElementById('colorPicker'); - const hexInput = document.getElementById('hexInput'); - const errorText = document.getElementById('errorText'); - const validColorDisplay = document.getElementById('validColorDisplay'); - - const color = colorPicker.value; - hexInput.value = color; - errorText.textContent = ''; - validColorDisplay.innerHTML = `
    ${color}
    `; -} - -function hexInputChange() { - const hexInput = document.getElementById('hexInput'); - const colorPicker = document.getElementById('colorPicker'); - const errorText = document.getElementById('errorText'); - const validColorDisplay = document.getElementById('validColorDisplay'); - - let val = hexInput.value.trim().toLowerCase(); - - if (val === '') { - errorText.textContent = ''; - validColorDisplay.innerHTML = ''; - return; - } - - let hexColor = ''; - - if (colorNames[val]) { - hexColor = colorNames[val]; - } else if (val[0] !== '#') { - val = '#' + val; - } - - if (hexColor) { - colorPicker.value = hexColor; - errorText.textContent = ''; - validColorDisplay.innerHTML = `
    ${hexColor}
    `; - return; - } - - const isValid = /^#[0-9A-Fa-f]{6}$/.test(val) || /^#[0-9A-Fa-f]{3}$/.test(val); - - if (isValid) { - const finalColor = val.length === 4 ? expandHex(val) : val; - colorPicker.value = finalColor; - errorText.textContent = ''; - validColorDisplay.innerHTML = `
    ${finalColor}
    `; - } else { - errorText.textContent = 'Invalid color HEX or name.'; - validColorDisplay.innerHTML = ''; - } -} - -function expandHex(short) { - if (short.length === 4 && short[0] === '#') { - return '#' + short[1] + short[1] + short[2] + short[2] + short[3] + short[3]; - } - return short; -} - -function generateRandomColor() { - const randomColor = '#' + Math.floor(Math.random()*16777215).toString(16); - const randomColorResult = document.getElementById('randomColorResult'); - randomColorResult.style.background = randomColor; - randomColorResult.textContent = randomColor; - } - - - -// Timestamp - -const datetimePicker = document.getElementById('datetimepicker'); -const unixTimeDisplay = document.getElementById('unixtime-display'); -const timestampInfo = document.getElementById('timestamp-info'); -const unixInput = document.getElementById('unix-input'); -const dateDisplay = document.getElementById('date-display'); -const dateInfo = document.getElementById('date-info'); -const currentTimeEl = document.getElementById('current-time'); -const timezoneInput = document.getElementById('timezone'); -const timezoneError = document.querySelector('.timezone-error'); -const timerDisplay = document.getElementById('timer-display'); - -if (!datetimePicker || !unixInput || !currentTimeEl) { - console.error('Required elements not found'); -} - -let currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; -let isTimezoneValid = true; -let clickCounters = {}; -let relativeOffset = 0; - -const now = new Date(); -const year = now.getFullYear(); -const month = String(now.getMonth() + 1).padStart(2, '0'); -const day = String(now.getDate()).padStart(2, '0'); -const hours = String(now.getHours()).padStart(2, '0'); -const minutes = String(now.getMinutes()).padStart(2, '0'); - -if (datetimePicker) { - datetimePicker.value = `${year}-${month}-${day}T${hours}:${minutes}`; -} - -const currentUnixTime = Math.floor(now.getTime() / 1000); -if (unixInput) { - unixInput.value = currentUnixTime; -} - -function updateTimezone() { - if (!timezoneInput) return; - - const timezoneValue = timezoneInput.value.trim(); - - if (!timezoneValue) { - currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; - isTimezoneValid = true; - if (timezoneError) timezoneError.textContent = ''; - updateDateFromUnix(); - updateCurrentTime(); - return; - } - - try { - const testDate = new Date(); - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezoneValue, - timeZoneName: 'short' - }); - const parts = formatter.formatToParts(testDate); - - currentTimezone = timezoneValue; - isTimezoneValid = true; - if (timezoneError) timezoneError.textContent = ''; - updateDateFromUnix(); - updateCurrentTime(); - } catch (error) { - if (timezoneError) timezoneError.textContent = 'Invalid timezone'; - isTimezoneValid = false; - currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; - updateDateFromUnix(); - updateCurrentTime(); - } -} - -function formatDateInTimezone(date, timezone) { - if (!isTimezoneValid || !timezone) { - return date.toLocaleString(); - } - - try { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezone, - year: 'numeric', - month: 'numeric', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - hour12: false - }); - - const parts = formatter.formatToParts(date); - const year = parts.find(p => p.type === 'year').value; - const month = parts.find(p => p.type === 'month').value.padStart(2, '0'); - const day = parts.find(p => p.type === 'day').value.padStart(2, '0'); - const hour = parts.find(p => p.type === 'hour').value.padStart(2, '0'); - const minute = parts.find(p => p.type === 'minute').value.padStart(2, '0'); - const second = parts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; - - return `${year}-${month}-${day} ${hour}:${minute}:${second}`; - } catch (error) { - return date.toLocaleString(); - } -} - -function getCurrentTimeInTimezone() { - const now = new Date(); - - if (!isTimezoneValid || !currentTimezone) { - return { - dateString: now.toLocaleDateString(), - unixTime: Math.floor(now.getTime() / 1000), - timezone: Intl.DateTimeFormat().resolvedOptions().timeZone - }; - } - - try { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: currentTimezone, - year: 'numeric', - month: 'numeric', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - hour12: false - }); - - const dateParts = formatter.formatToParts(now); - const year = dateParts.find(p => p.type === 'year').value; - const month = dateParts.find(p => p.type === 'month').value.padStart(2, '0'); - const day = dateParts.find(p => p.type === 'day').value.padStart(2, '0'); - const hour = dateParts.find(p => p.type === 'hour').value.padStart(2, '0'); - const minute = dateParts.find(p => p.type === 'minute').value.padStart(2, '0'); - const second = dateParts.find(p => p.type === 'second')?.value.padStart(2, '0') || '00'; - - return { - dateString: `${year}-${month}-${day} ${hour}:${minute}:${second}`, - unixTime: Math.floor(now.getTime() / 1000), - timezone: currentTimezone - }; - } catch (error) { - return { - dateString: now.toLocaleDateString(), - unixTime: Math.floor(now.getTime() / 1000), - timezone: Intl.DateTimeFormat().resolvedOptions().timeZone - }; - } -} - -function getUnixTimeForNewYear(year, timezone) { - try { - const dateString = `${year}-01-01T00:00:00`; - - if (timezone) { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezone, - year: 'numeric', - month: '2-digit', - day: '2-digit', - hour: '2-digit', - minute: '2-digit', - second: '2-digit', - hour12: false - }); - - const date = new Date(dateString); - const formatted = formatter.format(date); - - const adjustedDate = new Date(formatted); - return Math.floor(adjustedDate.getTime() / 1000); - } else { - return Math.floor(new Date(dateString + 'Z').getTime() / 1000); - } - } catch (error) { - return Math.floor(new Date(`${year}-01-01T00:00:00Z`).getTime() / 1000); - } -} - -function getUnixTimeForNextDay(timezone) { - try { - const now = new Date(); - const tomorrow = new Date(now); - tomorrow.setDate(tomorrow.getDate() + 1); - tomorrow.setHours(0, 0, 0, 0); - - if (timezone) { - const formatter = new Intl.DateTimeFormat('en-US', { - timeZone: timezone, - year: 'numeric', - month: '2-digit', - day: '2-digit', - hour: '2-digit', - minute: '2-digit', - second: '2-digit', - hour12: false - }); - - const formatted = formatter.format(tomorrow); - const adjustedDate = new Date(formatted); - return Math.floor(adjustedDate.getTime() / 1000); - } else { - tomorrow.setUTCHours(0, 0, 0, 0); - return Math.floor(tomorrow.getTime() / 1000); - } - } catch (error) { - const tomorrow = new Date(); - tomorrow.setDate(tomorrow.getDate() + 1); - tomorrow.setHours(0, 0, 0, 0); - return Math.floor(tomorrow.getTime() / 1000); - } -} - -function formatTimeDifference(timestamp) { - const now = Math.floor(Date.now() / 1000); - const diff = timestamp - now; - const absDiff = Math.abs(diff); - - if (absDiff < 60) { - return diff >= 0 ? `in ${absDiff} second${absDiff !== 1 ? 's' : ''}` : `${absDiff} second${absDiff !== 1 ? 's' : ''} ago`; - } - - const years = Math.floor(absDiff / 31536000); - const months = Math.floor((absDiff % 31536000) / 2592000); - const days = Math.floor((absDiff % 2592000) / 86400); - const hours = Math.floor((absDiff % 86400) / 3600); - const minutes = Math.floor((absDiff % 3600) / 60); - const seconds = absDiff % 60; - - const parts = []; - - if (years > 0) parts.push(`${years} year${years !== 1 ? 's' : ''}`); - if (months > 0) parts.push(`${months} month${months !== 1 ? 's' : ''}`); - if (days > 0) parts.push(`${days} day${days !== 1 ? 's' : ''}`); - if (hours > 0) parts.push(`${hours} hour${hours !== 1 ? 's' : ''}`); - if (minutes > 0) parts.push(`${minutes} minute${minutes !== 1 ? 's' : ''}`); - if (seconds > 0) parts.push(`${seconds} second${seconds !== 1 ? 's' : ''}`); - - if (parts.length === 0) { - return diff >= 0 ? 'now' : 'just now'; - } - - const timeString = parts.join(', '); - return diff >= 0 ? `in ${timeString}` : `${timeString} ago`; -} - -function updateTimerDisplay() { - if (!timerDisplay) return; - - const timestamp = parseInt(unixInput.value); - - if (!isNaN(timestamp)) { - timerDisplay.textContent = formatTimeDifference(timestamp); - } else { - timerDisplay.textContent = 'Invalid timestamp'; - } -} - -function updateCurrentTime() { - if (!currentTimeEl) return; - - const timeInfo = getCurrentTimeInTimezone(); - currentTimeEl.innerHTML = `${timeInfo.dateString}
    ${timeInfo.unixTime}
    ${timeInfo.timezone}`; - updateTimerDisplay(); -} - -function updateUnixTime() { - if (!datetimePicker || !unixTimeDisplay || !unixInput) return; - - const selectedDate = new Date(datetimePicker.value); - - if (!isNaN(selectedDate.getTime())) { - const unixTime = Math.floor(selectedDate.getTime() / 1000); - const dateString = formatDateInTimezone(selectedDate, currentTimezone); - - unixTimeDisplay.textContent = unixTime; - - if (parseInt(unixInput.value) !== unixTime) { - unixInput.value = unixTime; - updateDateFromUnix(); - } - } -} - -function updateDateFromUnix() { - if (!unixInput || !dateDisplay || !datetimePicker || !timerDisplay) return; - - const unixTime = parseInt(unixInput.value); - - if (!isNaN(unixTime) && unixTime >= 0) { - const date = new Date(unixTime * 1000); - - if (!isNaN(date.getTime())) { - const dateString = formatDateInTimezone(date, currentTimezone); - dateDisplay.textContent = dateString; - - const year = date.getFullYear(); - const month = String(date.getMonth() + 1).padStart(2, '0'); - const day = String(date.getDate()).padStart(2, '0'); - const hours = String(date.getHours()).padStart(2, '0'); - const minutes = String(date.getMinutes()).padStart(2, '0'); - - const datetimeLocalValue = `${year}-${month}-${day}T${hours}:${minutes}`; - - if (datetimePicker.value !== datetimeLocalValue) { - datetimePicker.value = datetimeLocalValue; - } - } - } else if (unixInput.value === '') { - dateDisplay.textContent = 'Not set'; - if (dateInfo) dateInfo.textContent = ''; - timerDisplay.textContent = 'Not set'; - } else { - dateDisplay.textContent = 'Invalid timestamp'; - if (dateInfo) dateInfo.textContent = 'Please enter a valid Unix timestamp'; - timerDisplay.textContent = 'Invalid timestamp'; - } - - updateTimerDisplay(); -} - -window.updateTimezone = updateTimezone; -window.updateUnixTime = updateUnixTime; -window.updateDateFromUnix = updateDateFromUnix; - -function createQuickButtons() { - if (!unixInput) return; - - const quickButtons = document.createElement('div'); - quickButtons.className = 'time-buttons'; - - const times = [ - {id: 'now', label: 'Now', type: 'now'}, - {id: 'hourAgo', label: '1 hour ago', type: 'relative', seconds: -3600}, - {id: 'dayAgo', label: '1 day ago', type: 'relative', seconds: -86400}, - {id: 'weekAgo', label: '1 week ago', type: 'relative', seconds: -604800}, - {id: 'hourLater', label: 'in 1 hour', type: 'relative', seconds: 3600}, - {id: 'dayLater', label: 'in 1 day', type: 'relative', seconds: 86400}, - {id: 'weekLater', label: 'in 1 week', type: 'relative', seconds: 604800}, - {id: 'newDay', label: 'Next day', type: 'newDay'}, - {id: 'newYear', label: 'Next New Year', type: 'newYear'} - ]; - - times.forEach(time => { - const button = document.createElement('button'); - button.id = time.id; - - if (time.type === 'newYear') { - const now = new Date(); - const nextYear = now.getFullYear() + 1; - button.textContent = `New Year ${nextYear}`; - } else if (time.type === 'newDay') { - button.textContent = time.label; - } else { - button.textContent = time.label; - } - - button.onclick = function() { - if (!clickCounters[time.id]) { - clickCounters[time.id] = 1; - } else { - clickCounters[time.id]++; - } - - const multiplier = clickCounters[time.id]; - let unixTime; - let baseTime = Math.floor(Date.now() / 1000) + relativeOffset; - - if (time.type === 'now') { - unixTime = Math.floor(Date.now() / 1000); - relativeOffset = 0; - for (const key in clickCounters) { - if (key !== 'newDay' && key !== 'newYear') { - clickCounters[key] = 0; - } - } - } else if (time.type === 'relative') { - relativeOffset += time.seconds; - unixTime = Math.floor(Date.now() / 1000) + relativeOffset; - } else if (time.type === 'newYear') { - const now = new Date(); - const nextYear = now.getFullYear() + multiplier; - button.textContent = `New Year ${nextYear}`; - unixTime = getUnixTimeForNewYear(nextYear, currentTimezone); - } else if (time.type === 'newDay') { - unixTime = getUnixTimeForNextDay(currentTimezone) + (86400 * (multiplier - 1)); - } - - unixInput.value = unixTime; - updateDateFromUnix(); - }; - - quickButtons.appendChild(button); - }); - - const resetButton = document.createElement('button'); - resetButton.textContent = 'Reset counters'; - resetButton.onclick = function() { - relativeOffset = 0; - for (const key in clickCounters) { - clickCounters[key] = 0; - } - - const newYearButton = document.getElementById('newYear'); - if (newYearButton) { - const now = new Date(); - const nextYear = now.getFullYear() + 1; - newYearButton.textContent = `New Year ${nextYear}`; - } - - unixInput.value = Math.floor(Date.now() / 1000); - updateDateFromUnix(); - }; - - quickButtons.appendChild(resetButton); - - unixInput.parentNode.insertBefore(quickButtons, unixInput.nextSibling); -} - -if (currentTimeEl) { - updateCurrentTime(); - setInterval(updateCurrentTime, 1000); -} - -document.addEventListener('DOMContentLoaded', function() { - createQuickButtons(); - updateDateFromUnix(); - updateUnixTime(); -}); From 5460e894f44cf88bc4f6f427356e2abb1add22b6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:36:48 +0300 Subject: [PATCH 1124/1179] Delete src/theme/autocomplete.js --- src/theme/autocomplete.js | 251 -------------------------------------- 1 file changed, 251 deletions(-) delete mode 100644 src/theme/autocomplete.js diff --git a/src/theme/autocomplete.js b/src/theme/autocomplete.js deleted file mode 100644 index d08dbc62cae..00000000000 --- a/src/theme/autocomplete.js +++ /dev/null @@ -1,251 +0,0 @@ -// Setting -let autocompleteEnabled = true; - -function changeAutocomplete() { - autocompleteEnabled = !autocompleteEnabled; - const autocompleteElement = document.getElementById('autocomplete'); - autocompleteElement.style.display = autocompleteEnabled ? 'block' : 'none'; - autoSettingChange('changeAutocompleteButton', autocompleteEnabled); - updateAutocompleteState(); -} - -function autoSettingChange(buttonName, status) { - const button = document.getElementById(buttonName); - if (!button) { - console.error(`Failed to find "${buttonName}" button.`); - return; - } - const activeGradient = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))'; - const inactiveGradient = 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; - button.style.background = status ? activeGradient : inactiveGradient; -} - -// Main autocomplete -function autocomplete() { - const functionsHeader = Array.from(document.querySelectorAll('li.chapter-item')).find(li => li.querySelector('div')?.textContent.trim() === 'Functions'); - if (!functionsHeader) return; - const sectionList = functionsHeader.nextElementSibling; - if (!sectionList) return; - const html = sectionList.innerHTML; - const functions = Array.from(new DOMParser().parseFromString(html, 'text/html').querySelectorAll('a')).map(a => a.textContent).filter(text => text.startsWith('$')); - const textarea = document.getElementById('editor'); - const autocompleteOutput = document.getElementById('autocomplete'); - let cursorInactiveTimeout; - let selectedIndex = -1; - - function hideAutocomplete() { - autocompleteOutput.innerHTML = ''; - clearTimeout(cursorInactiveTimeout); - selectedIndex = -1; - Array.from(autocompleteOutput.children).forEach(child => child.classList.remove('selected')); - } - - function updateAutocomplete() { - if (!autocompleteEnabled) { - hideAutocomplete(); - return; - } - const inputText = textarea.value; - const cursorPosition = textarea.selectionStart; - let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); - if (dollarIndex === -1) { hideAutocomplete(); return; } - const searchTerm = inputText.substring(dollarIndex, cursorPosition).toLowerCase(); - autocompleteOutput.innerHTML = ''; - const matchingFunctions = functions.filter(func => func.toLowerCase().startsWith(searchTerm)); - const displayedFunctions = matchingFunctions.slice(0, 5); - selectedIndex = -1; - Array.from(autocompleteOutput.children).forEach(child => child.classList.remove('selected')); - - const { left, top } = textarea.getBoundingClientRect(); - - const textareaStyle = window.getComputedStyle(textarea); - let lineHeight = parseInt(textareaStyle.lineHeight) || 16; - const paddingTop = parseInt(textareaStyle.paddingTop) || 0; - const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; - - const x = left + textarea.selectionStart * 8; - - let y = top + paddingTop + borderTopWidth + (Math.floor(inputText.substring(0, cursorPosition).split('\n').length)) * lineHeight + 30; - - autocompleteOutput.style.position = 'absolute'; - autocompleteOutput.style.left = `${x}px`; - autocompleteOutput.style.top = `${y}px`; - autocompleteOutput.style.zIndex = '1000'; - - displayedFunctions.forEach((func, index) => { - const span = document.createElement('span'); - span.textContent = func; - span.addEventListener('click', () => selectFunction(func,dollarIndex,cursorPosition,inputText)); - autocompleteOutput.appendChild(span); - }); - - clearTimeout(cursorInactiveTimeout); - cursorInactiveTimeout = setTimeout(hideAutocomplete, 10000); - } - - function selectFunction(func,dollarIndex,cursorPosition,inputText) { - textarea.value = inputText.substring(0, dollarIndex) + func + inputText.substring(cursorPosition); - textarea.selectionStart = textarea.selectionEnd = dollarIndex + func.length; - hideAutocomplete(); - textarea.focus(); - } - - function handleArrowKeys(event) { - if (autocompleteOutput.children.length === 0) return; - if (event.key === 'ArrowDown') { - event.preventDefault(); - selectedIndex = Math.min(selectedIndex + 1, autocompleteOutput.children.length - 1); - } else if (event.key === 'ArrowUp') { - event.preventDefault(); - selectedIndex = Math.max(selectedIndex - 1, 0); - } else if (event.key === 'Enter' && selectedIndex !== -1) { - event.preventDefault(); - const selectedFunction = autocompleteOutput.children[selectedIndex].textContent; - const inputText = textarea.value; - const cursorPosition = textarea.selectionStart; - let dollarIndex = inputText.substring(0, cursorPosition).lastIndexOf('$'); - selectFunction(selectedFunction,dollarIndex,cursorPosition,inputText); - return; - } - highlightSelected(); - } - - function highlightSelected() { - Array.from(autocompleteOutput.children).forEach((child, index) => { - child.classList.toggle('selected', index === selectedIndex); - }); - } - - if (textarea) { - textarea.addEventListener('input', updateAutocomplete); - textarea.addEventListener('mouseup', updateAutocomplete); - textarea.addEventListener('keydown', event => { - if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Enter') { - handleArrowKeys(event); - } - }); - - textarea.addEventListener('blur', () => { - setTimeout(hideAutocomplete, 200); - }); - - document.addEventListener('click', event => { - if (!autocompleteOutput.contains(event.target) && event.target !== textarea) { - hideAutocomplete(); - } - }); - } -} - -function addTooltips() { - const textarea = document.getElementById('editor'); - const tooltip = document.createElement('div'); - tooltip.id = 'tooltip'; - tooltip.style.position = 'absolute'; - tooltip.style.display = 'none'; - tooltip.style.zIndex = '1001'; - document.body.appendChild(tooltip); - - textarea.addEventListener('keyup', updateTooltip); - textarea.addEventListener('mouseup', updateTooltip); - - function updateTooltip() { - if (!autocompleteEnabled) { - tooltip.style.display = 'none'; - return; - } - - const text = textarea.value; - const cursor = textarea.selectionStart; - const commandTrigger = '$commandTrigger'; - const isSlashTrigger = '$isSlash'; - const timestampTrigger = '$getTimestamp'; - let tooltipText = ''; - - if (text.substring(cursor - commandTrigger.length, cursor) === commandTrigger) { - const name = document.getElementById('name').value || 'trigger'; - tooltipText = `Returns '${name}'`; - } else if (text.substring(cursor - isSlashTrigger.length, cursor) === isSlashTrigger) { - const slash = document.getElementById('scriptType').textContent.includes('Slash Command') ? 'true' : 'false'; - tooltipText = `Returns '${slash}'`; - } else if (text.substring(cursor - timestampTrigger.length, cursor).startsWith(timestampTrigger)) { - const timestamp = Math.floor(Date.now() / 1000); - tooltipText = `Returns '${timestamp}'`; - } - - if (tooltipText) { - const { left, top } = textarea.getBoundingClientRect(); - const textareaStyle = window.getComputedStyle(textarea); - let lineHeight = parseInt(textareaStyle.lineHeight); - lineHeight = isNaN(lineHeight) ? 16 : lineHeight; - const paddingTop = parseInt(textareaStyle.paddingTop) || 0; - const borderTopWidth = parseInt(textareaStyle.borderTopWidth) || 0; - const x = left + cursor * 8; - const y = top + paddingTop + borderTopWidth + (Math.floor(textarea.value.substring(0, textarea.selectionStart).split('\n').length)) * lineHeight + 30; - - tooltip.style.left = `${x}px`; - tooltip.style.top = `${y}px`; - tooltip.textContent = tooltipText; - tooltip.style.display = 'block'; - } else { - tooltip.style.display = 'none'; - } - } -} - -function updateAutocompleteState() { - const textarea = document.getElementById('editor'); - const autocompleteOutput = document.getElementById('autocomplete'); - if (!autocompleteEnabled) { - autocompleteOutput.innerHTML = ''; // Clear autocomplete - textarea.removeEventListener('input', updateAutocomplete); - textarea.removeEventListener('mouseup', updateAutocomplete); - document.getElementById('tooltip').style.display = 'none'; // Hide tooltip - textarea.removeEventListener('keyup',updateTooltip) - textarea.removeEventListener('mouseup',updateTooltip) - } else { - textarea.addEventListener('input', updateAutocomplete); - textarea.addEventListener('mouseup', updateAutocomplete); - textarea.addEventListener('keyup', updateTooltip); - textarea.addEventListener('mouseup', updateTooltip); - } -} - -document.addEventListener("DOMContentLoaded", function() { - if (window.location.href.includes('editor.html')) { - autocomplete(); - addTooltips(); - updateAutocompleteState(); - } -}); - -window.addEventListener('beforeunload', function (event) { - const textarea = document.getElementById('editor'); - - if (textarea.value.trim() === '') { - return; - } - - event.preventDefault(); - event.returnValue = ''; - const confirmationMessage = 'Are you sure you want to leave the page?'; - return confirmationMessage; -}); - -function updateInternetConnection() { - const text = document.getElementById('internetConnection'); - - if (text) { - if (window.navigator.onLine) { - text.textContent = '👍 All services work stably.'; - text.style.color = 'green'; - } else { - text.textContent = '🛜 Check your internet connection! It may affect some services...'; - text.style.color = 'red'; - } - } else { - clearInterval(intervalId); - } -} - -const intervalId = setInterval(updateInternetConnection, 1000); From b6e44a8a343d7b5ddeb608d82950fe173fe5151e Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:49:34 +0300 Subject: [PATCH 1125/1179] Update book.toml --- book.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/book.toml b/book.toml index 59efa1d913d..80ff25f2d62 100644 --- a/book.toml +++ b/book.toml @@ -82,6 +82,12 @@ assets_version = "3.0.2" # do not edit: managed by `mdbook-admonish install` "/bdscript/autoCompleteOptionName.html" = "../guides/general/interactions/slashCommands/autoComplete.html" "/bdscript/autoCompleteOptionValue.html" = "../guides/general/interactions/slashCommands/autoComplete.html" +# Tools +"/tools/timestamp.html" = "https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/timestamp.html" +"/tools/editor.html" = "https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/editor.html" +"/tools/color.html" = "https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/color.html" +"/tools/permissionscalculator.html" = "https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/permissionscalculator.html" + # Premium functions - Don't touch! "/bdscript/ai.html" = "../premium/ai.html" "/bdscript/aiQuota.html" = "../premium/aiQuota.html" From d5763acd1d794c5a8a4ea1018d76396f5a684a20 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:50:52 +0300 Subject: [PATCH 1126/1179] Update book.toml --- book.toml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/book.toml b/book.toml index 80ff25f2d62..59efa1d913d 100644 --- a/book.toml +++ b/book.toml @@ -82,12 +82,6 @@ assets_version = "3.0.2" # do not edit: managed by `mdbook-admonish install` "/bdscript/autoCompleteOptionName.html" = "../guides/general/interactions/slashCommands/autoComplete.html" "/bdscript/autoCompleteOptionValue.html" = "../guides/general/interactions/slashCommands/autoComplete.html" -# Tools -"/tools/timestamp.html" = "https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/timestamp.html" -"/tools/editor.html" = "https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/editor.html" -"/tools/color.html" = "https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/color.html" -"/tools/permissionscalculator.html" = "https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/permissionscalculator.html" - # Premium functions - Don't touch! "/bdscript/ai.html" = "../premium/ai.html" "/bdscript/aiQuota.html" = "../premium/aiQuota.html" From 54e0707aa04cd0da1bce1b45ab54222e9c4918fd Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:53:39 +0300 Subject: [PATCH 1127/1179] Update apply-settings.js --- src/theme/settings/apply-settings.js | 39 ++++++++++++++++++---------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/src/theme/settings/apply-settings.js b/src/theme/settings/apply-settings.js index 03e6b6a59e9..06161e54cc6 100644 --- a/src/theme/settings/apply-settings.js +++ b/src/theme/settings/apply-settings.js @@ -235,23 +235,36 @@ function applySettings() { } }); -const allLinks = document.querySelectorAll('a[href]'); + // Tools redirecting & ToS + +const currentPath = window.location.pathname; +const currentHref = window.location.href; -allLinks.forEach(link => { - const href = link.getAttribute('href'); +if (currentPath.includes('/tools/')) { + const fileName = currentPath.split('/').pop(); + window.location.replace('https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/' + fileName); +} +else if (currentPath.includes('/terms.html') || currentHref.includes('terms.html')) { + window.location.replace('https://botdesignerdiscord.com/tos'); +} +else { + const allLinks = document.querySelectorAll('a[href]'); - if (href) { - if (href.indexOf('../tools/') === 0) { - const newHref = 'https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/' + href.substring(9); - link.setAttribute('href', newHref); - } + allLinks.forEach(link => { + const href = link.getAttribute('href'); - if (href.includes('terms.html')) { - link.setAttribute('href', 'https://botdesignerdiscord.com/tos'); + if (href) { + if (href.indexOf('../tools/') === 0) { + const newHref = 'https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/' + href.substring(9); + link.setAttribute('href', newHref); + } + + if (href.includes('terms.html')) { + link.setAttribute('href', 'https://botdesignerdiscord.com/tos'); + } } - - } -}); + }); +} setDiscordTheme(data["discord-example-theme"]); } From 1e416b34cf910926c823c8164da062ebdcc36bee Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:59:59 +0300 Subject: [PATCH 1128/1179] Update terms.md --- src/terms.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/terms.md b/src/terms.md index 0c46403229a..ec433d480f4 100644 --- a/src/terms.md +++ b/src/terms.md @@ -1,11 +1,7 @@ - - -# Terms of Service - -The Terms of Service for Bot Designer for Discord can be found at: - -**** + + +Redirectig to https://botdesignerdiscord.com/tos From 5998f03a3b7b98d0949445f6f88772efeb4eb155 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 20:49:34 +0300 Subject: [PATCH 1129/1179] Update beginning.md --- src/guides/introduction/beginning.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/guides/introduction/beginning.md b/src/guides/introduction/beginning.md index 97b4f2fca69..7ef07118fa0 100644 --- a/src/guides/introduction/beginning.md +++ b/src/guides/introduction/beginning.md @@ -81,9 +81,10 @@ Send a `!ping` command in a channel of the server you invited your bot to. color: "#E67E22" content: | !ping -- username: BDFD Support - color: "#378afa" - bot: true +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true verified: true content: | Pong! From f999b12cf969992cc93b087a3c34baa8c8029527 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:04:07 +0300 Subject: [PATCH 1130/1179] Update embeddedURL.md --- src/bdscript/embeddedURL.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/embeddedURL.md b/src/bdscript/embeddedURL.md index ea78e227926..0d7c1713cbe 100644 --- a/src/bdscript/embeddedURL.md +++ b/src/bdscript/embeddedURL.md @@ -39,3 +39,7 @@ $footer[⬆️ Title hyperlink] footer: text: ⬆️ Title hyperlink ``` + +```admonish question title="What is this?" +How [`$title[]`](./title.md) and [`$footer[]`](./footer.md) works? +``` \ No newline at end of file From efc3a516f9e01d3d6b51c1916656c99c74d5c9a5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:04:43 +0300 Subject: [PATCH 1131/1179] Update footerIcon.md --- src/bdscript/footerIcon.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/footerIcon.md b/src/bdscript/footerIcon.md index 5a3e02481df..c3a0528035e 100644 --- a/src/bdscript/footerIcon.md +++ b/src/bdscript/footerIcon.md @@ -38,3 +38,7 @@ $footerIcon[$authorAvatar] text: ⬅️ That is the footer icon. This is the footer text. image: https://user-images.githubusercontent.com/111157596/257052136-4b8d5715-b381-4d5f-8c46-8ae0be53c8d8.png ``` + +```admonish question title="What is this?" +How [`$footer[]`](./footer.md) works? +``` \ No newline at end of file From 1d76a0cfe3a7addbdc21c0fef5b2f9ccd3650f40 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:05:43 +0300 Subject: [PATCH 1132/1179] Update image.md --- src/bdscript/image.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/image.md b/src/bdscript/image.md index 05fb5a7aa96..07af9683bb0 100644 --- a/src/bdscript/image.md +++ b/src/bdscript/image.md @@ -17,3 +17,7 @@ $image[$userAvatar[$botID]] ``` ![example](https://user-images.githubusercontent.com/69215413/123516701-76ecb080-d66b-11eb-9c65-fb7bbb5710b4.png) + +```admonish question title="What is this?" +How [`$userAvatar[]`](./userAvatar.md) and [`$botID`](./botID.md) works? +``` \ No newline at end of file From 97e5269ef5c0eef6bf8bc48c48039f7289b65cad Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:06:35 +0300 Subject: [PATCH 1133/1179] Update thumbnail.md --- src/bdscript/thumbnail.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bdscript/thumbnail.md b/src/bdscript/thumbnail.md index e41d43ae05f..9b6e92d59ea 100644 --- a/src/bdscript/thumbnail.md +++ b/src/bdscript/thumbnail.md @@ -22,4 +22,8 @@ $nomention $description[This is the thumbnail ↘️] $thumbnail[$authorAvatar] ``` -![example](https://user-images.githubusercontent.com/69215413/126551913-b3746b47-615a-48a3-9729-d07529e33f97.png) +![example](https://user-images.githubusercontent.com/69215413/126551913-b3746b47-615a-48a3-9729-d07529e33f97.png) + +```admonish question title="What is this?" +How [`$description[]`](./description.md) and [`$authorAvatar`](./authorAvatar.md) works? +``` From bc694f07ba40bad39366c2c2ad67ab7e30bc8ae8 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:07:01 +0300 Subject: [PATCH 1134/1179] Update title.md --- src/bdscript/title.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/title.md b/src/bdscript/title.md index 291842989bf..57b5fccbed3 100644 --- a/src/bdscript/title.md +++ b/src/bdscript/title.md @@ -38,4 +38,8 @@ $description[⬆️ That is a nice title.] embed: title: This is a title! description: ⬆️ That is a nice title. +``` + +```admonish question title="What is this?" +How [`$description[]`](./description.md) works? ``` From a3d17d9e0eedd29ffcdde5fee6db19f44d5ee0c0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:09:21 +0300 Subject: [PATCH 1135/1179] Update creationDate.md --- src/bdscript/creationDate.md | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/bdscript/creationDate.md b/src/bdscript/creationDate.md index 43094e85e43..5d8896055bf 100644 --- a/src/bdscript/creationDate.md +++ b/src/bdscript/creationDate.md @@ -5,8 +5,10 @@ Returns the creation date of any valid Discord Snowflake ID. ``` $creationDate[ID;(Format)] ``` - -> Uses GoLang date format + +```admonish info +Uses GoLang date format. +``` ### Parameters - `ID` `(Type: Snowflake || Flag: Required)`: The ID from which to get the creation date. The ID can be a `User ID`, a `Role ID`, a `Message ID`, a `Emoji ID`, or a `Guild ID`. @@ -15,13 +17,12 @@ $creationDate[ID;(Format)] > Click [me](../resources/timeFormat.md) to check all supported time format values. ## Example -- Default format - ``` - $nomention - $creationDate[$authorID] - ``` +``` +$nomention +$creationDate[$authorID] +``` -``` discord yaml +```discord yaml - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" @@ -35,15 +36,16 @@ $creationDate[ID;(Format)] content: | 2021-01-26 ``` -\ + +~~~admonish example -- Custom format - ``` - $nomention - $creationDate[$authorID;January 2, 2006 at 3:04 PM (MST -07:00)] - ``` +Example with custom format: +``` +$nomention +$creationDate[$authorID;January 2, 2006 at 3:04 PM (MST -07:00)] +``` -``` discord yaml +```discord yaml - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" @@ -57,6 +59,8 @@ $creationDate[ID;(Format)] content: | January 26, 2021 at 10:18 AM (UTC +00:00) ``` + +~~~ ```admonish question title="What is this?" How [`$authorID`](./authorID.md) works? From 09209daaab88103126ccd4b076818399a4e789d0 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:09:30 +0300 Subject: [PATCH 1136/1179] Update creationDate.md --- src/bdscript/creationDate.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bdscript/creationDate.md b/src/bdscript/creationDate.md index 5d8896055bf..87a0cb86c0a 100644 --- a/src/bdscript/creationDate.md +++ b/src/bdscript/creationDate.md @@ -39,7 +39,8 @@ $creationDate[$authorID] ~~~admonish example -Example with custom format: +Example with custom format: + ``` $nomention $creationDate[$authorID;January 2, 2006 at 3:04 PM (MST -07:00)] From dacc80b338d80fa4f24b8a37815d286b27adb9c7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:12:12 +0300 Subject: [PATCH 1137/1179] Update discriminator.md --- src/bdscript/discriminator.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/bdscript/discriminator.md b/src/bdscript/discriminator.md index f596816b7ea..77efc2543f0 100644 --- a/src/bdscript/discriminator.md +++ b/src/bdscript/discriminator.md @@ -31,8 +31,27 @@ Discriminator: #$discriminator[$mentioned[1]] bot: true verified: true content: | - Discriminator: #7678 -``` + Discriminator: #7678 +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + highlight: true + content: | + !example <@RainbowKey> +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Discriminator: #0000 +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + highlight: true + content: | + Returned 0000 because it only works for bot IDs. +``` ```admonish note You can use `$discriminator[]` to get the discriminator of the author. From c19ad02402c5dab606928685aa57b397e17af90c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:14:24 +0300 Subject: [PATCH 1138/1179] Update isAdmin.md --- src/bdscript/isAdmin.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/bdscript/isAdmin.md b/src/bdscript/isAdmin.md index d9a32a4c448..65e0d5c27ef 100644 --- a/src/bdscript/isAdmin.md +++ b/src/bdscript/isAdmin.md @@ -31,7 +31,24 @@ Are you an admin?: `$isAdmin[$authorID]` bot: true verified: true content: | - Are you an admin?: true + Are you an admin?: true +- user_id: 863865579483037726 + username: Kemi + color: "#000000" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Are you an admin?: false +- user_id: 863865579483037726 + username: Kemi + color: "#000000" + content: | + Sadly ``` ```admonish question title="What is this?" From d6d071fd501164e2c90cfc4efcfb45cf77f80b82 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:14:55 +0300 Subject: [PATCH 1139/1179] Update isBooster.md --- src/bdscript/isBooster.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/isBooster.md b/src/bdscript/isBooster.md index 2751a327bb8..9fb39555789 100644 --- a/src/bdscript/isBooster.md +++ b/src/bdscript/isBooster.md @@ -15,7 +15,7 @@ $isBooster[(User ID;Guild ID)] ## Example ``` $nomention -Booster? $isBooster[$mentioned[1]] +Booster?: $isBooster[$mentioned[1]] ``` ``` discord yaml @@ -30,7 +30,7 @@ Booster? $isBooster[$mentioned[1]] bot: true verified: true content: | - Booster? true + Booster?: true ``` ```admonish tip From 636a966410e75b256acd461ed9a15f964c92242a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:16:24 +0300 Subject: [PATCH 1140/1179] Update userExists.md --- src/bdscript/userExists.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bdscript/userExists.md b/src/bdscript/userExists.md index dbbf2a0c060..e21832c3b02 100644 --- a/src/bdscript/userExists.md +++ b/src/bdscript/userExists.md @@ -21,9 +21,10 @@ $userExists[$mentioned[1]] color: "#E67E22" content: | !example <@Spen> -- username: BDFD Support - color: "#378afa" - bot: true +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true verified: true content: | true From 5101877f86b23f76eaa6d995022f64a5f6d90b56 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:18:12 +0300 Subject: [PATCH 1141/1179] Update discriminator.md --- src/bdscript/discriminator.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bdscript/discriminator.md b/src/bdscript/discriminator.md index 77efc2543f0..5b33e7849e7 100644 --- a/src/bdscript/discriminator.md +++ b/src/bdscript/discriminator.md @@ -48,7 +48,6 @@ Discriminator: #$discriminator[$mentioned[1]] - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" - highlight: true content: | Returned 0000 because it only works for bot IDs. ``` From 082d5b422620e0f642daa7275e48fcb6bf3da754 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:21:51 +0300 Subject: [PATCH 1142/1179] Update userID.md --- src/bdscript/userID.md | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/bdscript/userID.md b/src/bdscript/userID.md index d1abad3ea29..24df5a60d21 100644 --- a/src/bdscript/userID.md +++ b/src/bdscript/userID.md @@ -12,7 +12,7 @@ $userID[Username#Discriminator / Username] ## Example ``` $nomention -$userID[$username] +$userID[$message] ``` ``` discord yaml @@ -20,16 +20,40 @@ $userID[$username] username: RainbowKey color: "#E67E22" content: | - !example + !example rainbow_key - username: BDFD Support user_id: 1009018156494368798 color: "#378afa" bot: true verified: true content: | - 803569638084313098 + 803569638084313098 +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example kubastick +- username: BDFD Support + user_id: 1009018156494368798 + color: "#378afa" + bot: true + verified: true + content: | + 390515191819010058 +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example BDFD Support#7678 +- username: BDFD Support + user_id: 1009018156494368798 + color: "#378afa" + bot: true + verified: true + content: | + 1009018156494368798 ``` ```admonish question title="What is this?" -How [`$username`](./username.md) works? +How [`$message`](./message.md) works? ``` From 5c0627afe657853980fdd8c6a9d50f7dee0f0c82 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:24:39 +0300 Subject: [PATCH 1143/1179] Update userInfo.md --- src/bdscript/userInfo.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bdscript/userInfo.md b/src/bdscript/userInfo.md index c7be49c535b..8629f774c5d 100644 --- a/src/bdscript/userInfo.md +++ b/src/bdscript/userInfo.md @@ -36,7 +36,8 @@ Discriminator: {discriminator}] ``` discord yaml - user_id: 803569638084313098 username: RainbowKey - color: "#E67E22" + color: "#E67E22" + highlight: true content: | !example <@RainbowKey> - user_id: 1009018156494368798 From 3e2aed112cc55922c466b1cfc7ec79532d907367 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:26:09 +0300 Subject: [PATCH 1144/1179] Update userJoined.md --- src/bdscript/userJoined.md | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/bdscript/userJoined.md b/src/bdscript/userJoined.md index 4b137280fe0..6d01c992b78 100644 --- a/src/bdscript/userJoined.md +++ b/src/bdscript/userJoined.md @@ -13,11 +13,10 @@ $userJoined[User ID;(Format)] > Click [me](../resources/timeFormat.md) to check all supported time format values. ## Example -- Default format - ``` - $nomention - $userJoined[$authorID] - ``` +``` +$nomention +$userJoined[$authorID] +``` ``` discord yaml - user_id: 803569638084313098 @@ -33,14 +32,17 @@ $userJoined[User ID;(Format)] content: | 2022-08-16 ``` + +~~~admonish example -- Custom format - ``` - $nomention - $userJoined[$authorID;January 2, 2006 at 3:04 PM (MST -07:00)] - ``` +Example with custom format: + +``` +$nomention +$userJoined[$authorID;January 2, 2006 at 3:04 PM (MST -07:00)] +``` -``` discord yaml +```discord yaml - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" @@ -54,6 +56,8 @@ $userJoined[User ID;(Format)] content: | August 16, 2022 at 8:39 AM (UTC +00:00) ``` + +~~~ ```admonish question title="What is this?" How [`$authorID`](./authorID.md) works? From 43e777bcdef039238031e11eab02b70f3d9fd692 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:26:38 +0300 Subject: [PATCH 1145/1179] Update userJoined.md --- src/bdscript/userJoined.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/userJoined.md b/src/bdscript/userJoined.md index 6d01c992b78..4bcaf7992bb 100644 --- a/src/bdscript/userJoined.md +++ b/src/bdscript/userJoined.md @@ -5,6 +5,10 @@ Returns the server joining date of a given user. ``` $userJoined[User ID;(Format)] ``` + +```admonish info +Uses GoLang date format. +``` ### Parameters - `User ID` `(Type: Snowflake || Flag: Required)`: The user whose join date will be returned. From 9fc1631616d42d082315013c9b70c0a9f74dea33 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:28:19 +0300 Subject: [PATCH 1146/1179] Update userJoinedDiscord.md --- src/bdscript/userJoinedDiscord.md | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/bdscript/userJoinedDiscord.md b/src/bdscript/userJoinedDiscord.md index 87a372cee57..91fb39a3c6e 100644 --- a/src/bdscript/userJoinedDiscord.md +++ b/src/bdscript/userJoinedDiscord.md @@ -15,6 +15,10 @@ $userJoinedDiscord[ID;(Format)] ``` ```admonish info +Uses GoLang date format. +``` + +```admonish tip Besides user IDs, `$userJoinedDiscord[]` can also return the creation date of any valid Discord Snowflake ID. ``` @@ -23,11 +27,10 @@ Besides user IDs, `$userJoinedDiscord[]` can also return the creation date of an - `Format` `(Type: String || Flag: Optional)`: Customize the default [time format](../resources/timeFormat.md) output. ## Example -- Default format - ``` - $nomention - $userJoinedDiscord[$authorID] - ``` +``` +$nomention +$userJoinedDiscord[$authorID] +``` ``` discord yaml - user_id: 803569638084313098 @@ -43,12 +46,15 @@ Besides user IDs, `$userJoinedDiscord[]` can also return the creation date of an content: | 2021-01-26 ``` - -- Custom format - ``` - $nomention - $userJoinedDiscord[$authorID;January 2, 2006 at 3:04 PM (MST -07:00)] - ``` + +~~~admonish example + +Example with custom format: + +``` +$nomention +$userJoinedDiscord[$authorID;January 2, 2006 at 3:04 PM (MST -07:00)] +``` ``` discord yaml - user_id: 803569638084313098 @@ -64,6 +70,8 @@ Besides user IDs, `$userJoinedDiscord[]` can also return the creation date of an content: | January 26, 2021 at 10:18 AM (UTC +00:00) ``` + +~~~ ```admonish question title="What is this?" How [`$authorID`](./authorID.md) works? From f439860155a29ad59fd89dd0fab49b9cf2ed5211 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:29:43 +0300 Subject: [PATCH 1147/1179] Update authorID.md --- src/bdscript/authorID.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/bdscript/authorID.md b/src/bdscript/authorID.md index b03dd99518f..c5d8f9bd11f 100644 --- a/src/bdscript/authorID.md +++ b/src/bdscript/authorID.md @@ -13,19 +13,19 @@ This command was executed by <@$authorID>! ``` ``` discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - !example -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- username: BDFD Support + user_id: 1009018156494368798 + color: "#378afa" + bot: true verified: true highlight: true content: | - This command was executed by <@Nicky>! + This command was executed by <@RainbowKey>! ``` ```admonish note From ed149e72055b17163af9e54daec98cf1518e2f9c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:31:46 +0300 Subject: [PATCH 1148/1179] Update categoryChannels.md --- src/bdscript/categoryChannels.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/bdscript/categoryChannels.md b/src/bdscript/categoryChannels.md index b256b4026a9..e2303d48d86 100644 --- a/src/bdscript/categoryChannels.md +++ b/src/bdscript/categoryChannels.md @@ -30,15 +30,15 @@ $categoryChannels[$parentID; ``` ``` discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - !example -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- username: BDFD Support + user_id: 1009018156494368798 + color: "#378afa" + bot: true verified: true content: | Total 5 channels! From b5457fcdb3fb41982dd77f974f1951b7f891221c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:32:11 +0300 Subject: [PATCH 1149/1179] Update categoryCount.md --- src/bdscript/categoryCount.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/bdscript/categoryCount.md b/src/bdscript/categoryCount.md index b8462122d61..24e05dda571 100644 --- a/src/bdscript/categoryCount.md +++ b/src/bdscript/categoryCount.md @@ -9,17 +9,18 @@ $categoryCount ``` $nomention There are $categoryCount categories in this server! -``` +``` + ``` discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - !example -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- username: BDFD Support + user_id: 1009018156494368798 + color: "#378afa" + bot: true verified: true content: | There are 3 categories in this server! From e645ce2f649ebe15137ef6466af2eadf45e64e59 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:32:28 +0300 Subject: [PATCH 1150/1179] Update categoryCountComplex.md --- src/bdscript/categoryCountComplex.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/bdscript/categoryCountComplex.md b/src/bdscript/categoryCountComplex.md index 00e58e317b6..ec61f2ddd70 100644 --- a/src/bdscript/categoryCountComplex.md +++ b/src/bdscript/categoryCountComplex.md @@ -16,15 +16,15 @@ There are $categoryCount[$message] categories in the server! ``` ``` discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - !example 790676954247725106 -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- username: BDFD Support + user_id: 1009018156494368798 + color: "#378afa" + bot: true verified: true content: | There are 5 categories in the server! From 9b68d8ee38c3bcd545ccd0f79d06651562e788b6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:32:46 +0300 Subject: [PATCH 1151/1179] Update categoryID.md --- src/bdscript/categoryID.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/bdscript/categoryID.md b/src/bdscript/categoryID.md index 3f0ba4c7330..32f69cddf5f 100644 --- a/src/bdscript/categoryID.md +++ b/src/bdscript/categoryID.md @@ -20,15 +20,15 @@ Category ID: $categoryID[$message] ``` ``` discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - !example Information -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- username: BDFD Support + user_id: 1009018156494368798 + color: "#378afa" + bot: true verified: true content: | Category ID: 790620501927526462 From fae6ddc6fc52aec87922d9b53280aa31a25288f9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:40:47 +0300 Subject: [PATCH 1152/1179] Update channelCount.md --- src/bdscript/channelCount.md | 40 ++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/bdscript/channelCount.md b/src/bdscript/channelCount.md index e852fecb94a..7cbf6734e97 100644 --- a/src/bdscript/channelCount.md +++ b/src/bdscript/channelCount.md @@ -1,11 +1,15 @@ # $channelCount Returns the amount of channels in the current server. - ## Syntax ``` $channelCount -``` +``` + +```admonish info +It's the sum of the number of categories, channels, and active forum posts (threads). +``` + ## Example ``` $nomention @@ -24,5 +28,33 @@ There are $channelCount channels in this server! bot: true verified: true content: | - There are 19 channels in this server! -``` + There are 34 channels in this server! +``` + +~~~admonish tip + +To avoid counting categories, you can use [`$categoryCount`](./categoryCount.md): + +``` +$nomention +There are $sub[$channelCount;$categoryCount] channels in this server! +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + There are 21 channels in this server! +``` + +> How [`$sum[]`](./sum.md) and [`$categoryCount`](./categoryCount.md) works? + +~~~ From 211c100176ccede5f572a676ffd0c95b565a616f Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:42:40 +0300 Subject: [PATCH 1153/1179] Update channelCount.md --- src/bdscript/channelCount.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bdscript/channelCount.md b/src/bdscript/channelCount.md index 7cbf6734e97..94b26e25879 100644 --- a/src/bdscript/channelCount.md +++ b/src/bdscript/channelCount.md @@ -55,6 +55,6 @@ There are $sub[$channelCount;$categoryCount] channels in this server! There are 21 channels in this server! ``` -> How [`$sum[]`](./sum.md) and [`$categoryCount`](./categoryCount.md) works? +> How [`$sub[]`](./sub.md) and [`$categoryCount`](./categoryCount.md) works? ~~~ From 777b3bd6b70e9603727fa7b01ab2d17a9e2ff321 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:44:37 +0300 Subject: [PATCH 1154/1179] Update channelTopic.md --- src/bdscript/channelTopic.md | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/bdscript/channelTopic.md b/src/bdscript/channelTopic.md index 1149897ad19..f0cbcfcd080 100644 --- a/src/bdscript/channelTopic.md +++ b/src/bdscript/channelTopic.md @@ -9,23 +9,20 @@ $channelTopic ## Example ``` $nomention -<#$channelID>'s channel topic is: $channelTopic -``` +Topic of this channel is: $channelTopic +``` + ``` discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - !example -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true verified: true content: | - <#testing>'s channel topic is: A testing channel! -``` - -```admonish question title="What is this?" -How [`$channelID`](./channelID.md) works? + Topic of this channel is: A testing channel! ``` From 7d88dc690f9a7f93de90d41a0becd4c50bbefa5c Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:49:32 +0300 Subject: [PATCH 1155/1179] Update channelTopicComplex.md --- src/bdscript/channelTopicComplex.md | 64 ++++++++++++++++++----------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/src/bdscript/channelTopicComplex.md b/src/bdscript/channelTopicComplex.md index a92371dcde5..f17ff99a9f2 100644 --- a/src/bdscript/channelTopicComplex.md +++ b/src/bdscript/channelTopicComplex.md @@ -9,26 +9,44 @@ $channelTopic[Channel ID] ### Parameters - `Channel ID` `(Type: Snowflake || Flag: Required)`: The channel to return its topic. -## Example -``` -$nomention -<#$noMentionMessage>'s channel topic is: $channelTopic[$noMentionMessage] -``` -``` discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - !example 860870690323300359 -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true - verified: true - content: | - <#demo>'s channel topic is: Demos, examples and more! -``` - -```admonish question title="What is this?" -How [`$noMentionMessage`](./noMentionMessage.md) works? -``` +## Example +``` +$nomention +Channel Topic: $channelTopic[$mentionedChannels[1]] +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example <#media> +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Channel Topic: Post cat pictures here! +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example <#secret> +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Channel Topic: +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + ⬆️ Returns empty value if no description. +``` + +```admonish question title="What is this?" +How [`$mentionedChannels[]`](./mentionedChannels.md) works? +``` \ No newline at end of file From 356b437150afec48fea25c748c3cf4f524939d40 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:52:18 +0300 Subject: [PATCH 1156/1179] Update channelType.md --- src/bdscript/channelType.md | 62 +++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/src/bdscript/channelType.md b/src/bdscript/channelType.md index 20116003060..7461930214b 100644 --- a/src/bdscript/channelType.md +++ b/src/bdscript/channelType.md @@ -16,24 +16,48 @@ The different channel types that the bot will return are: `text`, `voice`, `cate ## Example ``` $nomention -$channelType[$channelID] +$channelType[$mentionedChannels[1]] ``` -``` discord yaml -- user_id: 729343563401265193 - username: Nicky - color: "#EE7908" - content: | - !example -- user_id: 566613317972394004 - username: Wiki Bot - color: "#748BD4" - bot: true - verified: true - content: | - text -``` - -```admonish question title="What is this?" -How [`$channelID`](./channelID.md) works? -``` +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example <#main-chat> +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + text +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example <#Events> +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + stage +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example <#disco> +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + voice +``` + +```admonish question title="What is this?" +How [`$mentionedChannels[]`](./mentionedChannels.md) works? +``` \ No newline at end of file From f470655166e7c3e05d801e105d639a383efa705a Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:52:56 +0300 Subject: [PATCH 1157/1179] Update createChannel.md --- src/bdscript/createChannel.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bdscript/createChannel.md b/src/bdscript/createChannel.md index c1e8d58c207..9e31f7640f4 100644 --- a/src/bdscript/createChannel.md +++ b/src/bdscript/createChannel.md @@ -75,5 +75,7 @@ New channel created! ID: $channelID[main-chat] New channel created! ID: 566370477967147018 ``` +> How [`$channelID[]`](./channelIDComplex.md) works? + ~~~ From 39ed981b6732ee1b590f4f8735b6f46652259da3 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:53:43 +0300 Subject: [PATCH 1158/1179] Update deleteChannels.md --- src/bdscript/deleteChannels.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/deleteChannels.md b/src/bdscript/deleteChannels.md index bfb1c9dad3a..655fce8c5f7 100644 --- a/src/bdscript/deleteChannels.md +++ b/src/bdscript/deleteChannels.md @@ -3,11 +3,11 @@ Deletes the provided channel(s). ## Syntax ``` -$deleteChannels[Channel IDs;...] +$deleteChannels[Channel ID;...] ``` ### Parameters -- `Channel IDs` `(Type: Snowflake || Flag: Required)`: The channels to delete. Use semicolons `;` as a separator to separate multiple channel IDs. +- `Channel ID` `(Type: Snowflake || Flag: Required)`: The channels to delete. Use semicolons `;` as a separator to separate multiple channel IDs. ### Permissions Required permissions that the bot must have for this function to work properly: From 3e55a3a5dfa2eedaef710cc68a3795cf3f218ee5 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:53:58 +0300 Subject: [PATCH 1159/1179] Update deleteChannels.md --- src/bdscript/deleteChannels.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/deleteChannels.md b/src/bdscript/deleteChannels.md index 655fce8c5f7..bfb1c9dad3a 100644 --- a/src/bdscript/deleteChannels.md +++ b/src/bdscript/deleteChannels.md @@ -3,11 +3,11 @@ Deletes the provided channel(s). ## Syntax ``` -$deleteChannels[Channel ID;...] +$deleteChannels[Channel IDs;...] ``` ### Parameters -- `Channel ID` `(Type: Snowflake || Flag: Required)`: The channels to delete. Use semicolons `;` as a separator to separate multiple channel IDs. +- `Channel IDs` `(Type: Snowflake || Flag: Required)`: The channels to delete. Use semicolons `;` as a separator to separate multiple channel IDs. ### Permissions Required permissions that the bot must have for this function to work properly: From c2132f9281a79a102a99b601dac5ab966e259ba4 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:54:32 +0300 Subject: [PATCH 1160/1179] Update dmChannelID.md --- src/bdscript/dmChannelID.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/bdscript/dmChannelID.md b/src/bdscript/dmChannelID.md index 61c1ba42f87..2cfec8643a3 100644 --- a/src/bdscript/dmChannelID.md +++ b/src/bdscript/dmChannelID.md @@ -15,14 +15,15 @@ ID: $dmChannelID[$authorID] ``` ``` discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- username: BDFD Support - color: "#378afa" - bot: true +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true verified: true content: | ID: 1011919618610311189 From 6646eac30fb399291ce59507212f2aa3a1655856 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:55:13 +0300 Subject: [PATCH 1161/1179] Update findChannel.md --- src/bdscript/findChannel.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bdscript/findChannel.md b/src/bdscript/findChannel.md index cd11044a088..5fce42540cd 100644 --- a/src/bdscript/findChannel.md +++ b/src/bdscript/findChannel.md @@ -1,7 +1,9 @@ # $findChannel Finds a channel's ID from the given channel name, ID, or mention. - -> This function can only find channels of **the current** server. + +```admonish warning +This function can only find channels of **the current** server. +``` ## Syntax ``` From 4fbefbaa233e1e28740360e385f550524a77ff25 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:57:14 +0300 Subject: [PATCH 1162/1179] Update isNSFW.md --- src/bdscript/isNSFW.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/bdscript/isNSFW.md b/src/bdscript/isNSFW.md index f25c371b078..338441a7164 100644 --- a/src/bdscript/isNSFW.md +++ b/src/bdscript/isNSFW.md @@ -1,6 +1,40 @@ # $isNSFW Returns whether the provided channel is NSFW (Not Safe For Work) or not. + + ```admonish info "true" means the channel is NSFW, "false" means it isn't. ``` From b2c774d3e4ebd62ca8568003d89311b7a26ab80b Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:59:24 +0300 Subject: [PATCH 1163/1179] Update isNSFW.md --- src/bdscript/isNSFW.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/bdscript/isNSFW.md b/src/bdscript/isNSFW.md index 338441a7164..28afdde2bc7 100644 --- a/src/bdscript/isNSFW.md +++ b/src/bdscript/isNSFW.md @@ -54,11 +54,6 @@ Is this channel NSFW?: `$isNSFW[$channelID]` ``` ```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - NSFW Channel 🤫 - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" @@ -74,11 +69,6 @@ Is this channel NSFW?: `$isNSFW[$channelID]` ``` ```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - It's a main chat here! - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" From f0128431f6b10e91cbcd80c5ab5cbe51537c7ad7 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:02:46 +0300 Subject: [PATCH 1164/1179] Update isNSFW.md --- src/bdscript/isNSFW.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/bdscript/isNSFW.md b/src/bdscript/isNSFW.md index 28afdde2bc7..c5a99abcf79 100644 --- a/src/bdscript/isNSFW.md +++ b/src/bdscript/isNSFW.md @@ -6,7 +6,7 @@ Returns whether the provided channel is NSFW (Not Safe For Work) or not. margin-top: 1.5rem; } -.discord-messages > .discord-message:before { +.discord-messages > .discord-message:first-of-type:before { color: var(--link-color); background: var(--card-bg); border-radius: 10px; @@ -19,15 +19,15 @@ Returns whether the provided channel is NSFW (Not Safe For Work) or not. z-index: 1000; } -.discord-messages > .discord-message:before { - content: 'Not NSFW channel'; +.discord-messages > .discord-message:first-of-type:before { + content: 'Not NSFW'; } -.discord-messages:first-of-type > .discord-message:before { +.discord-messages:first-of-type > .discord-message:first-of-type:before { content: 'NSFW Channel'; } -.discord-messages > .discord-message:hover:before { +.discord-messages:hover > .discord-message:before { transform: scale(1.025); transform: rotate(-2.5deg); border-radius: 12.5px; From b805c4ad9dc71be234c7e988be680b2b132e4dcf Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:03:15 +0300 Subject: [PATCH 1165/1179] Update blackListServers.md --- src/bdscript/blackListServers.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bdscript/blackListServers.md b/src/bdscript/blackListServers.md index 5014ad0586f..70527ec0ea4 100644 --- a/src/bdscript/blackListServers.md +++ b/src/bdscript/blackListServers.md @@ -60,9 +60,10 @@ Pong! $ping ms color: "#E67E22" content: | !example -- username: BDFD Support - color: "#378afa" - bot: true +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true verified: true content: | ❌ You can't use this command! From 9d1890baee123cb9dd76973016b7ac83ce627d01 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:05:20 +0300 Subject: [PATCH 1166/1179] Update isTicket.md --- src/bdscript/isTicket.md | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/bdscript/isTicket.md b/src/bdscript/isTicket.md index ada48801c2b..fa8edebc7db 100644 --- a/src/bdscript/isTicket.md +++ b/src/bdscript/isTicket.md @@ -16,11 +16,39 @@ $isTicket[(Channel ID)] ## Example ``` $nomention -$onlyIf[$isTicket[]==true;This command can only be used in a ticket!] +$onlyIf[$isTicket[]==true;❌ This command can only be used in a ticket!] This is a ticket! ``` -![example](https://user-images.githubusercontent.com/113303649/212466758-7a11f906-f356-438d-8f64-0977c28b5a3c.png)\ -![example](https://user-images.githubusercontent.com/113303649/212466712-3e8d1768-af20-4ea3-9402-8668ae8d9ccc.png) + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + ❌ This command can only be used in a ticket! +``` + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + This is a ticket! +``` ```admonish tip To create a ticket, use the [`$newTicket[]`](./newTicket.md) function. From e8a7dd01e6887bd0e155c811ef2ced3b32e15dc2 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:06:45 +0300 Subject: [PATCH 1167/1179] Update isTicket.md --- src/bdscript/isTicket.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/bdscript/isTicket.md b/src/bdscript/isTicket.md index fa8edebc7db..e5a559c490a 100644 --- a/src/bdscript/isTicket.md +++ b/src/bdscript/isTicket.md @@ -1,5 +1,39 @@ # $isTicket Checks whether the current or specified channel is a ticket or not. + + ```admonish info "true" means the channel is a ticket, "false" means it isn't. From fd2d5343284715ade76f185f537d065df205977d Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:08:23 +0300 Subject: [PATCH 1168/1179] Update isTicket.md --- src/bdscript/isTicket.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/isTicket.md b/src/bdscript/isTicket.md index e5a559c490a..be8bdbf10af 100644 --- a/src/bdscript/isTicket.md +++ b/src/bdscript/isTicket.md @@ -43,6 +43,10 @@ Checks whether the current or specified channel is a ticket or not. ``` $isTicket[(Channel ID)] ``` + +```admonish info +This function uses the channel name to determine whether it is a ticket or not. If the channel name contains `ticket` word, the function will return `true`. +``` ### Parameters - `Channel ID` `(Type: Snowflake || Flag: Optional)`: The channel to check. _(Defaults to the current channel)_ From dfd78b5a02b3a5f9211b5c445aa5541c020638d6 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:12:30 +0300 Subject: [PATCH 1169/1179] Update parentID.md --- src/bdscript/parentID.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/bdscript/parentID.md b/src/bdscript/parentID.md index 017ca9b8834..2c31d28170f 100644 --- a/src/bdscript/parentID.md +++ b/src/bdscript/parentID.md @@ -11,4 +11,38 @@ $parentID $nomention Current category: $parentID ``` -![example](https://user-images.githubusercontent.com/94063167/199015904-8c1635fc-ae14-40e6-9102-5f0a94a65cb7.png) + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Current category: 567445224989786132 +``` + +~~~admonish example +Returns empty if no parent (category) was found: + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Current category: +``` + +~~~ \ No newline at end of file From d7afa8282adc35c66abd6685977c11e9b451ed21 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:16:24 +0300 Subject: [PATCH 1170/1179] Update parentIDComplex.md --- src/bdscript/parentIDComplex.md | 38 +++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/bdscript/parentIDComplex.md b/src/bdscript/parentIDComplex.md index 4417434351c..da2f85337f2 100644 --- a/src/bdscript/parentIDComplex.md +++ b/src/bdscript/parentIDComplex.md @@ -12,6 +12,40 @@ $parentID[Channel ID] ## Example ``` $nomention -Category ID: $parentID[$mentionedChannels[1]] +Category: $parentID[$mentionedChannels[1]] ``` -![example](https://user-images.githubusercontent.com/94063167/199022843-84b86272-d690-4630-99ba-80e024ffea52.png) + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example <#bot-commands-1> +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Category: 612065938715574273 +``` + +~~~admonish example +Returns empty if no parent (category) was found: + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example <#developers> +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true + verified: true + content: | + Category: +``` + +~~~ \ No newline at end of file From 2a7266ba8604c5ed69212580f8871dde0c438aa9 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:17:17 +0300 Subject: [PATCH 1171/1179] Update parentIDComplex.md --- src/bdscript/parentIDComplex.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bdscript/parentIDComplex.md b/src/bdscript/parentIDComplex.md index da2f85337f2..29d9a03a4f1 100644 --- a/src/bdscript/parentIDComplex.md +++ b/src/bdscript/parentIDComplex.md @@ -48,4 +48,8 @@ Returns empty if no parent (category) was found: Category: ``` -~~~ \ No newline at end of file +~~~ + +```admonish question title="What is this?" +How [`$mentionedChannels[]`](./mentionedChannels.md) works? +``` \ No newline at end of file From 5ca9b4816604d02f6379ec763a87f12d90671b06 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:19:23 +0300 Subject: [PATCH 1172/1179] Update rulesChannelID.md --- src/bdscript/rulesChannelID.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bdscript/rulesChannelID.md b/src/bdscript/rulesChannelID.md index 8b724d5d2d0..cef9f590cf5 100644 --- a/src/bdscript/rulesChannelID.md +++ b/src/bdscript/rulesChannelID.md @@ -29,6 +29,10 @@ Rule channel's ID: $rulesChannelID[$guildID] content: | Rule channel's ID: 594598851155984426 ``` + +```admonish question title="What is this?" +How [`$guildID`](./guildID.md) works? +``` ~~~admonish tip title="How to stop the error message?" The `$rulesChannelID[]` function as said in above returns an error if there isn't any rule channel set on the server and there is a way to stop that. From 5c2506d907ccd03cbd79a575f39a1813016d2957 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:26:13 +0300 Subject: [PATCH 1173/1179] Update voiceUserLimit.md --- src/bdscript/voiceUserLimit.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bdscript/voiceUserLimit.md b/src/bdscript/voiceUserLimit.md index 8d469df74bb..ab68664773e 100644 --- a/src/bdscript/voiceUserLimit.md +++ b/src/bdscript/voiceUserLimit.md @@ -27,7 +27,7 @@ Voice User Limit: $voiceUserLimit[$message] bot: true verified: true content: | - 0 + Voice User Limit: 0 - user_id: 803569638084313098 username: RainbowKey color: "#E67E22" @@ -39,7 +39,7 @@ Voice User Limit: $voiceUserLimit[$message] bot: true verified: true content: | - 99 + Voice User Limit: 99 ``` ```admonish question title="What is this?" From d302591eca6bc069c5b0d48bb7f8a3a23c1ff0ff Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:28:12 +0300 Subject: [PATCH 1174/1179] Update voiceUserLimit.md --- src/bdscript/voiceUserLimit.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/bdscript/voiceUserLimit.md b/src/bdscript/voiceUserLimit.md index ab68664773e..b0228c90841 100644 --- a/src/bdscript/voiceUserLimit.md +++ b/src/bdscript/voiceUserLimit.md @@ -12,7 +12,7 @@ $voiceUserLimit[(Voice Channnel ID)] ## Example ``` $nomention -Voice User Limit: $voiceUserLimit[$message] +Voice User Limit: $voiceUserLimit[$mentionedChannels[1]] ``` ``` discord yaml @@ -20,7 +20,7 @@ Voice User Limit: $voiceUserLimit[$message] username: RainbowKey color: "#E67E22" content: | - !example 611281459080331274 + !example <#voice-1> - username: BDFD Support user_id: 1009018156494368798 color: "#378afa" @@ -32,7 +32,12 @@ Voice User Limit: $voiceUserLimit[$message] username: RainbowKey color: "#E67E22" content: | - !example 827255538705236019 + ⬆️ No limits +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example <#general> - username: BDFD Support user_id: 1009018156494368798 color: "#378afa" @@ -43,7 +48,7 @@ Voice User Limit: $voiceUserLimit[$message] ``` ```admonish question title="What is this?" -How [`$message`](./message.md) works? +How [`$mentionedChannels[]`](./mentionedChannels.md) works? ``` ```admonish tip From 72749c7be5f1a9ecaf9834c8b1590f446f857f14 Mon Sep 17 00:00:00 2001 From: RainbowKey <113303649+Rainb0wKey@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:30:39 +0300 Subject: [PATCH 1175/1179] Update serverChannelExists.md --- src/bdscript/serverChannelExists.md | 38 ++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/bdscript/serverChannelExists.md b/src/bdscript/serverChannelExists.md index 86475c971b3..d53a9bd9904 100644 --- a/src/bdscript/serverChannelExists.md +++ b/src/bdscript/serverChannelExists.md @@ -3,15 +3,45 @@ Checks if the channel exists in the current server. ## Syntax ``` -$serverChannelExists[Channel ID] +$serverChannelExists[Channel] ``` ### Parameters -- `Channel ID` `(Type: Snowflake, String || Flag: Emptiable)`: Returns "true" if the channel exists, otherwise "false" is returned. +- `Channel` `(Type: Snowflake, String || Flag: Emptiable)`: Returns "true" if the channel exists, otherwise "false" is returned. ## Example ``` $nomention -$serverChannelExists[$message[1]] +Exists?: $serverChannelExists[$message] ``` -![example](https://user-images.githubusercontent.com/111157596/234031742-e57f230d-5086-4552-83e9-31b6c6bbe7b6.png) + +``` discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example 566370477967147018 +- username: BDFD Support + user_id: 1009018156494368798 + color: "#378afa" + bot: true + verified: true + content: | + Exists?: true +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example dhjejemxndj +- username: BDFD Support + user_id: 1009018156494368798 + color: "#378afa" + bot: true + verified: true + content: | + Exists?: false +``` + +```admonish question title="What is this?" +How [`$message`](./message.md) works? +``` \ No newline at end of file From 892b2d518d16c69a5f02dcbefc79c357abf862aa Mon Sep 17 00:00:00 2001 From: Jakub Tomana Date: Sun, 25 Jan 2026 20:34:44 +0100 Subject: [PATCH 1176/1179] chore: Clean-up wiki --- src/CHANGELOG.md | 52 +- src/SUMMARY.md | 9 +- src/bdscript/addContainer.md | 5 +- src/bdscript/color.md | 27 +- src/bdscript/colorRole.md | 5 +- src/bdscript/createRole.md | 5 +- src/bdscript/editEmbedIn.md | 5 +- src/bdscript/editMessage.md | 5 +- src/bdscript/embedSuppressErrors.md | 5 +- src/bdscript/getEmbedData.md | 3 - src/bdscript/getRoleColor.md | 4 - src/bdscript/getTimestamp.md | 4 - src/bdscript/getTimestampComplex.md | 8 +- src/bdscript/hostingExpireTime.md | 12 +- src/bdscript/hostingExpireTimeComplex.md | 6 +- src/bdscript/isValidHex.md | 4 - src/bdscript/lastPinTimestamp.md | 4 - src/bdscript/messageEditedTimestamp.md | 4 - src/bdscript/modifyRole.md | 5 +- src/bdscript/premiumExpireTime.md | 4 - src/bdscript/roleInfo.md | 3 - src/bdscript/sendEmbedMessage.md | 5 +- src/bdscript/userBannerColor.md | 4 - src/bdscript/webhookColor.md | 5 +- src/bdscript/webhookSend.md | 5 +- src/guides/general/webhooks.md | 10 +- src/resources/discordTimestamps.md | 4 - src/terms.md | 7 - src/theme/css/changelog.css | 80 --- src/theme/css/chrome.css | 2 - src/theme/playground.js | 667 ----------------------- src/theme/settings/apply-settings.js | 486 ++++++++--------- src/tools.md | 17 + src/tools/color.md | 7 - src/tools/editor.md | 7 - src/tools/permissionscalculator.md | 7 - src/tools/timestamp.md | 7 - 37 files changed, 303 insertions(+), 1196 deletions(-) delete mode 100644 src/terms.md delete mode 100644 src/theme/css/changelog.css create mode 100644 src/tools.md delete mode 100644 src/tools/color.md delete mode 100644 src/tools/editor.md delete mode 100644 src/tools/permissionscalculator.md delete mode 100644 src/tools/timestamp.md diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 3d5c3f06b23..2a3adca2fd0 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -6,33 +6,31 @@ } - - -# 2026 - -## January -Added Components V2 functions: -- Added `$addTextDisplay[]` -- Added `$addSeparator[]` -- Added `$addContainer[]` -- Added `$addSection[]` -- Added `$addThumbnail[]` -- Added `$addMediaGallery[]` -- Added `$addMediaGallery[]` -- Added `$addMediaGalleryItem[]` -- Added `$addActionRow[]` -- Added `$addButtonCV2[]` -- Added `$addMentionableSelect[]` -- Added `$getMentionableSelectUserID[]` -- Added `$getMentionableSelectUserIDs[]` -- Added `$getMentionableSelectUserCount` -- Added `$addUserSelect` -- Added `$getUserSelectUserID` -- Added `$getUserSelectUserIDs` -- Added `$getUserSelectUserCount` -- Added `$addRoleSelect` -- Added `$getRoleSelectRoleID` -- Added `$getRoleSelectRoleIDs` +# 2026 + +## January +Added Components V2 functions: +- Added `$addTextDisplay[]` +- Added `$addSeparator[]` +- Added `$addContainer[]` +- Added `$addSection[]` +- Added `$addThumbnail[]` +- Added `$addMediaGallery[]` +- Added `$addMediaGallery[]` +- Added `$addMediaGalleryItem[]` +- Added `$addActionRow[]` +- Added `$addButtonCV2[]` +- Added `$addMentionableSelect[]` +- Added `$getMentionableSelectUserID[]` +- Added `$getMentionableSelectUserIDs[]` +- Added `$getMentionableSelectUserCount` +- Added `$addUserSelect` +- Added `$getUserSelectUserID` +- Added `$getUserSelectUserIDs` +- Added `$getUserSelectUserCount` +- Added `$addRoleSelect` +- Added `$getRoleSelectRoleID` +- Added `$getRoleSelectRoleIDs` - Added `$getRoleSelectRoleCount` # 2025 diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 8dff831fcec..29b216fb019 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -4,7 +4,7 @@ [Settings](./settings.md) [Changelog](./CHANGELOG.md) [Flowchart Changelog](./FLOWCHART_CHANGELOG.md) -[Terms of Service](./terms.md) +[Terms of Service](https://botdesignerdiscord.com/tos) [Entity Transfer Policy](./entityTransferPolicy.md) --- @@ -41,12 +41,7 @@ - [Hyperlinks](./guides/other/hyperlinks.md) - [Share Code](./guides/other/sharecode.md) - [Common BDFD Errors](./guides/other/commonErrors.md) - -- [Tools]() - - [Color](./tools/color.md) - - [Text Editor](./tools/editor.md) - - [Permission Calculator](./tools/permissionscalculator.md) - - [Timestamp Converter](./tools/timestamp.md) + - [Tools](./tools.md) - [Resources]() - [Introduction](./resources/introduction.md) diff --git a/src/bdscript/addContainer.md b/src/bdscript/addContainer.md index f82acdd8d72..a822dcf1313 100644 --- a/src/bdscript/addContainer.md +++ b/src/bdscript/addContainer.md @@ -24,10 +24,7 @@ The container body must contain [container components](#container-components), o You can't have multiple containers and [sections](./addSection.md) **with the same name** in one message. So for example, you can’t have two containers with the name set to `Container1`. ``` -- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the container border color as. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Vacantable)`: The color hex to set the container border color as. You can also use color integer number. - `Spoiler?` `(Type: Bool || Flag: Optional)`: Will the container have a spoiler effect? diff --git a/src/bdscript/color.md b/src/bdscript/color.md index eb6fee8cc59..980daef2c5e 100644 --- a/src/bdscript/color.md +++ b/src/bdscript/color.md @@ -7,10 +7,7 @@ $color[Color hex;(Index)] ``` ### Parameters -- `Color hex` `(Type: Color || Flag: Emptiable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Emptiable)`: The color hex to set the embed border color as. You can also use color integer number. - `Index` `(Type: Integer || Flag: Optional)`: What embed the color border should belong to. The default is `1`. [(learn more)](../resources/embedIndexes.md) @@ -20,17 +17,17 @@ $nomention $description[⬅️ That is the embed color border!] $color[#673ab7] ``` - -```discord yaml -- user_id: 803569638084313098 - username: RainbowKey - color: "#E67E22" - content: | - !example -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true + +```discord yaml +- user_id: 803569638084313098 + username: RainbowKey + color: "#E67E22" + content: | + !example +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true verified: true content: embed: diff --git a/src/bdscript/colorRole.md b/src/bdscript/colorRole.md index e2e535865be..46ecf9bf255 100644 --- a/src/bdscript/colorRole.md +++ b/src/bdscript/colorRole.md @@ -7,10 +7,7 @@ $colorRole[Color hex] ``` ### Parameters -- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../tools/color.md) to change the mentioned role color to. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Required)`: The color hex to change the mentioned role color to. You can also use color integer number. ## Example ``` diff --git a/src/bdscript/createRole.md b/src/bdscript/createRole.md index 67e6aa35949..f8bf087cebe 100644 --- a/src/bdscript/createRole.md +++ b/src/bdscript/createRole.md @@ -16,10 +16,7 @@ Discord allows users to create up to 250 roles per server. Role names can have a maximum of 100 characters. ``` -- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../tools/color.md) of the new role. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Required)`: The color hex of the new role. You can also use color integer number. - `Display role?` `(Type: Bool || Flag: Vacantable)`: Whether the role should be displayed separately (hoisted) or not. `no` means the role won't be hoisted, `yes` means it will.\ ![example](https://user-images.githubusercontent.com/69215413/122795705-965e9480-d28b-11eb-8e4e-98338f143ecb.png) diff --git a/src/bdscript/editEmbedIn.md b/src/bdscript/editEmbedIn.md index 023852694c0..2807552c864 100644 --- a/src/bdscript/editEmbedIn.md +++ b/src/bdscript/editEmbedIn.md @@ -13,10 +13,7 @@ $editEmbedIn[Time;(Title;Description;Footer;Color hex)] - `Title` `(Type: String || Flag: Vacantable)`: The new embed title. Optional. - `Description` `(Type: String || Flag: Vacantable)`: The new embed description. Optional. - `Footer` `(Type: String || Flag: Vacantable)`: The new embed footer. Optional. -- `Color hex` `(Type: Color || Flag: Vacantable)`: The embed border color, must be a valid [color hex](../tools/color.md). You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Vacantable)`: The embed border color, must be a valid color hex. You can also use color integer number. ## Example ``` diff --git a/src/bdscript/editMessage.md b/src/bdscript/editMessage.md index c751b5976b5..aabd3b751e3 100644 --- a/src/bdscript/editMessage.md +++ b/src/bdscript/editMessage.md @@ -13,10 +13,7 @@ $editMessage[Channel ID;Message ID;Content;(Title;Description;Color hex;Footer)] - `Content` `(Type: String || Flag: Emptiable)`: The new message contents. - `Title` `(Type: String || Flag: Vacantable)`: The new embed title. - `Description` `(Type: String || Flag: Vacantable)`: The new embed description. -- `Color hex` `(Type: Color || Flag: Vacantable)`: The new embed [color border hex](../tools/color.md). You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Vacantable)`: The new embed color border hex. You can also use color integer number. - `Footer` `(Type: String || Flag: Vacantable)`: The new embed footer text. diff --git a/src/bdscript/embedSuppressErrors.md b/src/bdscript/embedSuppressErrors.md index 9742ff485e9..31c0979241e 100644 --- a/src/bdscript/embedSuppressErrors.md +++ b/src/bdscript/embedSuppressErrors.md @@ -11,10 +11,7 @@ $embedSuppressErrors[Title;Description;(Color hex;Author;Footer;Footer icon)] ### Parameters - `Title` `(Type: String || Flag: Emptiable)`: The title of the embed. - `Description` `(Type: String || Flag: Emptiable)`: The embed description. -- `Color hex` `(Type: Color || Flag: Vacantable)`: The embed border color, must be a valid [color hex](../tools/color.md). You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Vacantable)`: The embed border color, must be a valid color hex. You can also use color integer number. - `Author` `(Type: String || Flag: Vacantable)`: The embed author text. - `Footer` `(Type: String || Flag: Vacantable)`: The embed footer text. diff --git a/src/bdscript/getEmbedData.md b/src/bdscript/getEmbedData.md index 0f4bc11cf1f..f2962a09603 100644 --- a/src/bdscript/getEmbedData.md +++ b/src/bdscript/getEmbedData.md @@ -17,9 +17,6 @@ $getEmbedData[Channel ID;Message ID;Embed index;Embed property (title/descriptio - `color` - The color border hex of the embed. - `image` - The image of the embed. - `timestamp` - The timestamp of the embed. -```admonish tip title="Timestamp Converter" -You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! -``` ## Example ``` diff --git a/src/bdscript/getRoleColor.md b/src/bdscript/getRoleColor.md index d47a8225923..ebb7e23e2f6 100644 --- a/src/bdscript/getRoleColor.md +++ b/src/bdscript/getRoleColor.md @@ -6,10 +6,6 @@ Returns a role's color hex. $getRoleColor[Role ID] ``` -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to test colors! -``` - ### Parameters - `Role ID` `(Type: Snowflake || Flag: Required)`: The role to get the color hex from. diff --git a/src/bdscript/getTimestamp.md b/src/bdscript/getTimestamp.md index b87ee5c2e93..87c21fbe7f7 100644 --- a/src/bdscript/getTimestamp.md +++ b/src/bdscript/getTimestamp.md @@ -6,10 +6,6 @@ Returns the current [unix timestamp](https://www.unixtimestamp.com/) in seconds. $getTimestamp ``` -```admonish tip title="Timestamp Converter" -You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! -``` - ## Example ``` $nomention diff --git a/src/bdscript/getTimestampComplex.md b/src/bdscript/getTimestampComplex.md index b7a3c8aa782..226890b08a9 100644 --- a/src/bdscript/getTimestampComplex.md +++ b/src/bdscript/getTimestampComplex.md @@ -6,19 +6,15 @@ Returns the current [unix timestamp](https://www.unixtimestamp.com/) in the sele $getTimestamp[Time unit] ``` -```admonish tip title="Timestamp Converter" -You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! -``` - ### Parameters - `Time unit` `(Type: Enum || Flag: Required)`: Sets timestamp time unit. - + ```admonish info title="Possible input" - Time unit value can either be: - `s` (seconds) - `ms` (milliseconds) - `ns` (nanoseconds) -``` +``` ## Example ``` diff --git a/src/bdscript/hostingExpireTime.md b/src/bdscript/hostingExpireTime.md index de02322428e..a2b06317514 100644 --- a/src/bdscript/hostingExpireTime.md +++ b/src/bdscript/hostingExpireTime.md @@ -6,10 +6,6 @@ Returns your bot's hosting expiration date. $hostingExpireTime ``` -```admonish tip title="Timestamp Converter" -You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! -``` - ## Example ``` $nomention @@ -22,10 +18,10 @@ My hosting expiration date: $hostingExpireTime color: "#E67E22" content: | !example -- user_id: 1009018156494368798 - username: BDFD Support - color: "#378afa" - bot: true +- user_id: 1009018156494368798 + username: BDFD Support + color: "#378afa" + bot: true verified: true content: | My hosting expiration date: San, 3 Sep 2029 23:59:00 UTC diff --git a/src/bdscript/hostingExpireTimeComplex.md b/src/bdscript/hostingExpireTimeComplex.md index 5133527c7a6..13cd5d07b6b 100644 --- a/src/bdscript/hostingExpireTimeComplex.md +++ b/src/bdscript/hostingExpireTimeComplex.md @@ -4,10 +4,6 @@ Returns your bot's hosting expiration date. If "yes" is provided, the function r ## Syntax ``` $hostingExpireTime[Return unix timestamp?] -``` - -```admonish tip title="Timestamp Converter" -You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! ``` ### Parameters @@ -25,7 +21,7 @@ I will be offline color: "#E67E22" content: | !example -- user_id: 1009018156494368798 +- user_id: 1009018156494368798 username: BDFD Support color: "#378afa" bot: true diff --git a/src/bdscript/isValidHex.md b/src/bdscript/isValidHex.md index cdf3c1ff359..622a02300f3 100644 --- a/src/bdscript/isValidHex.md +++ b/src/bdscript/isValidHex.md @@ -62,10 +62,6 @@ Is valid HEX? $isValidHex[$message] How [`$message`](./message.md) works? ``` -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to choose colors! -``` -

    🤖 Playground

    Here you can understand how this function works.

    diff --git a/src/bdscript/lastPinTimestamp.md b/src/bdscript/lastPinTimestamp.md index 2ec2eafd7ba..dfa69bc2625 100644 --- a/src/bdscript/lastPinTimestamp.md +++ b/src/bdscript/lastPinTimestamp.md @@ -6,10 +6,6 @@ Returns the last pinned message unixtime in the current channel. $lastPinTimestamp ``` -```admonish tip title="Timestamp Converter" -You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! -``` - ## Example ``` $nomention diff --git a/src/bdscript/messageEditedTimestamp.md b/src/bdscript/messageEditedTimestamp.md index f5f9be69880..61b40e84820 100644 --- a/src/bdscript/messageEditedTimestamp.md +++ b/src/bdscript/messageEditedTimestamp.md @@ -6,10 +6,6 @@ Returns an unixtime of when the message was edited. $messageEditedTimestamp[Channel ID;Message ID] ``` -```admonish tip title="Timestamp Converter" -You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! -``` - ### Parameters - `Channel ID` `(Type: Snowflake || Flag: Required)`: The channel ID where the message is. - `Message ID` `(Type: Snowflake || Flag: Required)`: The message ID of the message. diff --git a/src/bdscript/modifyRole.md b/src/bdscript/modifyRole.md index 3cf85f176ca..485d7fc37e0 100644 --- a/src/bdscript/modifyRole.md +++ b/src/bdscript/modifyRole.md @@ -13,10 +13,7 @@ You can use `!unchanged` as an argument to leave the setting as-is. ### Parameters - `Role ID` `(Type: Snowflake || Flag: Required)`: The ID of the role to modify. - `Role name` `(Type: String || Flag: Optional)`: The new role name. -- `Color hex` `(Type: Color || Flag: Optional)`: The new role [color hex](../tools/color.md). You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Optional)`: The new role color hex. You can also use color integer number. - `Hoisted?` `(Type: Bool || Flag: Optional)`: Whether the role should be displayed separately or not. - `Mentionable?` `(Type: Bool || Flag: Optional)`: Whether the role should be mentionable by everyone or not. diff --git a/src/bdscript/premiumExpireTime.md b/src/bdscript/premiumExpireTime.md index 9bb1286a548..3ade8b24686 100644 --- a/src/bdscript/premiumExpireTime.md +++ b/src/bdscript/premiumExpireTime.md @@ -10,10 +10,6 @@ Returns `expired` if the bot is not premium. $premiumExpireTime[(Return unix timestamp?)] ``` -```admonish tip title="Timestamp Converter" -You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! -``` - ### Parameters - `Return unix timestamp?` `(Type: Bool || Flag: Optional)`: If "yes" is written, it will return the premium expiration value in UNIX timestamp and if "no", it will output as normal time format. Defaults to "no". diff --git a/src/bdscript/roleInfo.md b/src/bdscript/roleInfo.md index 2034d60668f..27de92321fd 100644 --- a/src/bdscript/roleInfo.md +++ b/src/bdscript/roleInfo.md @@ -17,9 +17,6 @@ You can use the following "commands" within `$roleInfo[]`: - `{mentionable}` - Returns if the role is mentionable by everyone. - `{hoist}` - Returns if the role is hoisted (displayed separately). - `{color}` - Returns the role's color. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to test colors! -``` - `{position}` - Returns the role's position on the "roles list". diff --git a/src/bdscript/sendEmbedMessage.md b/src/bdscript/sendEmbedMessage.md index 7b46c03c631..e038548f69b 100644 --- a/src/bdscript/sendEmbedMessage.md +++ b/src/bdscript/sendEmbedMessage.md @@ -12,10 +12,7 @@ $sendEmbedMessage[Channel ID;Content;(Title;Title URL;Description;Color hex;Auth - `Title` `(Type: String || Flag: Vacantable)`: The text that will be used as the title. - `Title URL` `(Type: URL || Flag: Vacantable)`: The URL that will be applied to the title. - `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. -- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Vacantable)`: The color hex to set the embed border color as. You can also use color integer number. - `Author` `(Type: String || Flag: Vacantable )`: The text that appears at the author. - `Author icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the author. Must be a valid image URL. diff --git a/src/bdscript/userBannerColor.md b/src/bdscript/userBannerColor.md index e096b8b523d..cc572bd4553 100644 --- a/src/bdscript/userBannerColor.md +++ b/src/bdscript/userBannerColor.md @@ -6,10 +6,6 @@ Returns the color of the given user banner. Returns an empty string if no banner $userBannerColor[User ID] ``` -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to test colors! -``` - ### Parameters - `User ID` `(Type: Snowflake || Flag: Required)`: The user to get the banner color from. diff --git a/src/bdscript/webhookColor.md b/src/bdscript/webhookColor.md index 12900841284..6a2d9b47739 100644 --- a/src/bdscript/webhookColor.md +++ b/src/bdscript/webhookColor.md @@ -8,10 +8,7 @@ $webhookColor[Webhook URL;Color hex] ### Parameters - `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. -- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Required)`: The color hex to set the embed border color as. You can also use color integer number. ## Example ``` diff --git a/src/bdscript/webhookSend.md b/src/bdscript/webhookSend.md index 9677bed1948..51a15861ed8 100644 --- a/src/bdscript/webhookSend.md +++ b/src/bdscript/webhookSend.md @@ -12,10 +12,7 @@ $webhookSend[Webhook URL;(Content;Title;Title URL;Description;Color hex;Author;A - `Title` `(Type: String || Flag: Vacantable)`: The text that will be used as the title. - `Title URL` `(Type: URL || Flag: Vacantable)`: The URL that will be applied to the title. - `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. -- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../tools/color.md) to set the embed border color as. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Vacantable)`: The color hex to set the embed border color as. You can also use color integer number. - `Author` `(Type: String || Flag: Vacantable )`: The text that appears at the author. - `Author icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the author. diff --git a/src/guides/general/webhooks.md b/src/guides/general/webhooks.md index 17ab4b2642b..7cc5e60ec8a 100644 --- a/src/guides/general/webhooks.md +++ b/src/guides/general/webhooks.md @@ -110,10 +110,7 @@ $webhookSend[Webhook URL;(Content;Title;Title URL;Description;Color hex;Author;A - `Title` `(Type: String || Flag: Vacantable)`: The text that will be used as the title. - `Title URL` `(Type: URL || Flag: Vacantable)`: The URL that will be applied to the title. - `Description` `(Type: String || Flag: Vacantable)`: The description that will be applied to the embed. -- `Color hex` `(Type: Color || Flag: Vacantable)`: The [color hex](../../tools/color.md) to set the embed border color as. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Vacantable)`: The color hex to set the embed border color as. You can also use color integer number. - `Author` `(Type: String || Flag: Vacantable )`: The text that appears at the author. - `Author icon` `(Type: URL || Flag: Vacantable)`: The image that appears next to the author. @@ -435,10 +432,7 @@ $webhookColor[Webhook URL;Color hex] ### Parameters - `Webhook URL` `(Type: URL || Flag: Required)`: The URL of the webhook you want to use. -- `Color hex` `(Type: Color || Flag: Required)`: The [color hex](../../tools/color.md) to set the embed border color as. You can also use color integer number. -```admonish tip title="Color Picker" -You can use our ["Color" tool](../../tools/color.md) to select the best color! -``` +- `Color hex` `(Type: Color || Flag: Required)`: The color hex to set the embed border color as. You can also use color integer number. ## Example ``` diff --git a/src/resources/discordTimestamps.md b/src/resources/discordTimestamps.md index aa2b48782a8..288dabe1d87 100644 --- a/src/resources/discordTimestamps.md +++ b/src/resources/discordTimestamps.md @@ -1,10 +1,6 @@ # Discord Timestamps Discord timestamps are used to provide time in multiple formats. The information is given according to the user's timezone and locale. Discord timestamps are built with the Unix Time system, meaning that they are dynamic. These can be used by anyone; This includes users, webhooks, and applications. -```admonish tip title="Timestamp Converter" -You can use our ["Timestamp Converter" tool](../tools/timestamp.md) to work with unixtime! -``` - ## Syntax Timestamp syntax: `` diff --git a/src/terms.md b/src/terms.md deleted file mode 100644 index ec433d480f4..00000000000 --- a/src/terms.md +++ /dev/null @@ -1,7 +0,0 @@ - - -Redirectig to https://botdesignerdiscord.com/tos diff --git a/src/theme/css/changelog.css b/src/theme/css/changelog.css deleted file mode 100644 index 5419ba008b3..00000000000 --- a/src/theme/css/changelog.css +++ /dev/null @@ -1,80 +0,0 @@ -/* Changelogs */ - -.changelog { - background: var(--card-bg); - padding-left: 10px; - padding-right: 10px; - padding-bottom: 2px; - margin-bottom: 10px; - border-radius: 10px; - border-top: 2px solid var(--card-bg); - position: relative; -} - -.changelog .hljs { - box-shadow: none; -} - -.editPage { - visibility: hidden; -} - -.changePrev { - margin-top: 10px; - border: solid; - border-width: 2px; - border-color: var(--link-color); - border-radius: 10px; - height: 10rem; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - transition: 0.3s; -} - -.changePrev#year { - margin-top: 0; - border: none; -} - -.changelog:hover > .changePrev { - border-color: var(--card-hover); - border-radius: 15px; - transition: 0.3s; -} - -.changePrev h2 { - margin-top: 75px; - font-size: 200%; -} - -.changePrev p { - margin-top: -20px; - margin-bottom: 85px; -} - -.changelog:hover > .changePrev > #newUpdate { - background-color: var(--card-hover); - border-radius: 12px; - transform: scale(1.05); - transition: 0.3s; -} - -#newUpdate { - user-select: none; - -webkit-user-select: none; - position: absolute; - top: 20px; - left: 20px; - background-color: var(--link-color); - color: #e1e1e1; - padding: 5px 10px; - border-radius: 10px; - transition: 0.3s; -} - -#newUpdate:before { - content: "🔥"; - filter: drop-shadow(2px 2px 5px rgba(0, 0, 0, 0.3)); -} diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index 786e24a6261..a126eb0fe5a 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1274,8 +1274,6 @@ ul#searchresults span.teaser em { border-radius: 10px; padding: .2rem 1rem .2rem 1rem; margin-bottom: .5rem; - background: rgba(255, 255, 255, 0.03); - border: 1px solid rgba(255, 255, 255, 0.04); cursor: pointer; } diff --git a/src/theme/playground.js b/src/theme/playground.js index ae7d5f58f5d..3a70c852a08 100644 --- a/src/theme/playground.js +++ b/src/theme/playground.js @@ -179,670 +179,3 @@ function editInputHeight() { playInputt.style.width = "fit-content"; } } - -// Editor tools -function updateStats() { - const text = document.getElementById("editor").value; - - const words = text.trim().split(/\s+/).filter(word => word !== ""); - const wordCount = words.length; - - let spaceCount = 0; - for (let i = 0; i < text.length; i++) { - if (text[i] === ' ') { - spaceCount++; - } - } - - const lineCount = text.split('\n').length; - const charCount = text.length; - const byteCount = new TextEncoder().encode(text).length; - const escapes = ["%{DOL}%", "%ESCAPED%", "\\]", "\\;", "%{-SEMICOL-}%"]; - let escapesCount = 0; - escapes.forEach(escape => { - let count = 0; - let position = text.indexOf(escape); - while (position !== -1) { - count++; - position = text.indexOf(escape, position + escape.length); - } - escapesCount += count; - }); - - const specialChars = text.replace(/[\w\s]/g, "").length; - - document.getElementById("wordCount").textContent = wordCount; - document.getElementById("spaceCount").textContent = spaceCount; - document.getElementById("lineCount").textContent = lineCount; - document.getElementById("charCount").textContent = charCount; - document.getElementById("byteCount").textContent = byteCount; - document.getElementById("escapesCount").textContent = escapesCount; - document.getElementById("specialChars").textContent = specialChars; -} - -function replaceText() { - const searchText = document.getElementById("searchText").value; - const replaceText = document.getElementById("replaceText").value; - const editor = document.getElementById("editor"); - - try { - const regex = new RegExp(searchText, 'g'); - editor.value = editor.value.replace(regex, replaceText); - } catch (e) { - const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - editor.value = editor.value.replaceAll(escapedSearchText, replaceText); - } - - updateStats(); - checkBrackets(); -} - -function replaceOneText() { - const searchText = document.getElementById("searchText").value; - const replaceText = document.getElementById("replaceText").value; - const editor = document.getElementById("editor"); - - try { - const regex = new RegExp(searchText); - editor.value = editor.value.replace(regex, replaceText); - } catch (e) { - const escapedSearchText = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - editor.value = editor.value.replace(escapedSearchText, replaceText); - } - - updateStats(); - checkBrackets(); -} - - -let showWarnings = true; -let showErrors = true; - -function editorWarning() { - showWarnings = !showWarnings; - - callButtonChange('changeWarningsButton', showWarnings); - updateErrorVisibility(); -} - -function editorError() { - showErrors = !showErrors; - - callButtonChange('changeErrorsButton', showErrors); - updateErrorVisibility(); -} - -function updateErrorVisibility() { - const errorMessageElement = document.getElementById("error-message"); - const errorDivs = errorMessageElement.children; - - for (let i = 0; i < errorDivs.length; i++) { - const errorDiv = errorDivs[i]; - - if (errorDiv.style && errorDiv.style.color) { - const isWarning = errorDiv.style.color === "orange"; - const isError = errorDiv.style.color === "red"; - - if (isWarning) { - errorDiv.style.display = showWarnings ? "block" : "none"; - } - - if (isError) { - errorDiv.style.display = showErrors ? "block" : "none"; - } - } - } -} - -function callError(message, type = 'error', unique = false) { - const errorMessageElement = document.getElementById("error-message"); - - if (unique) { - for (let i = 0; i < errorMessageElement.children.length; i++) { - if (errorMessageElement.children[i].textContent.startsWith(message)) { - return; - } - } - } - - let closeAllButton = document.getElementById('close-all-errors-btn'); - const errorDiv = document.createElement("div"); - errorDiv.style.display = "block"; - - if (type === 'warn') { - errorDiv.style.color = "orange"; - } else { - errorDiv.style.color = "red"; - } - - errorDiv.innerHTML = `${message} ×`; - errorMessageElement.appendChild(errorDiv); - - if (closeAllButton) { - errorMessageElement.appendChild(closeAllButton); - } - - const closeBtn = errorDiv.querySelector('.close-btn'); - closeBtn.addEventListener('click', function() { - errorDiv.remove(); - }); - - updateErrorVisibility(); -} - -function deleteError(message) { - const errorMessageElement = document.getElementById("error-message"); - - for (let i = errorMessageElement.children.length - 1; i >= 0; i--) { - const child = errorMessageElement.children[i]; - - if (child.tagName === 'DIV' && child.textContent.startsWith(message)) { - child.remove(); - } - } - updateCloseAllButton(); -} - -function updateCloseAllButton() { - let closeAllButton = document.getElementById('close-all-errors-btn'); - const errorMessageElement = document.getElementById("error-message"); - const errorCount = errorMessageElement.children.length - (closeAllButton ? 1 : 0); - const closeAllButtonId = 'close-all-errors-btn'; - - if (errorCount > 3) { - if (!closeAllButton) { - closeAllButton = document.createElement('button'); - closeAllButton.id = closeAllButtonId; - closeAllButton.textContent = `Close all ${errorCount} notifications`; - - closeAllButton.addEventListener('click', () => { - while (errorMessageElement.firstChild) { - errorMessageElement.removeChild(errorMessageElement.firstChild); - } - }); - errorMessageElement.appendChild(closeAllButton); - } else { - closeAllButton.textContent = `Close all ${errorCount} notifications`; - } - } else if (closeAllButton) { - closeAllButton.remove(); - } -} - -function checkBrackets() { - const text = document.getElementById("editor").value; - const textBytes = new TextEncoder().encode(text).length; - let dollarCount = 0; - let openBrackets = 0; - let closeBrackets = 0; - let lastOpenBracketLine = -1; - - const errorMessageElement = document.getElementById("error-message"); - errorMessageElement.innerHTML = ""; - errorMessageElement.style.color = "black"; - - if (textBytes > 65536) { - callError("Error: Text exceeds allowed size (65536 bytes)."); - } - - if (text.indexOf('$') === -1 && text.length > 2000) { - callError("Warning: Character limit exceeded (2000) for messages without functions.", 'warn'); - } - - const lines = text.split('\n'); - for (let i = 0; i < lines.length; i++) { - const line = lines[i]; - for (let j = 0; j < line.length; j++) { - if (line[j] === '$') { - if (j + 1 < line.length && /[a-zA-Z]/.test(line[j + 1])) { - dollarCount++; - } - } else if (line[j] === '[') { - openBrackets++; - lastOpenBracketLine = i + 1; - if (j + 1 < line.length && line[j + 1] === ']') { - if (openBrackets <= dollarCount) { - callError(`Warning: Empty brackets [] detected on line ${i + 1}.`, 'warn'); - } - } - } else if (line[j] === ']' && (j === 0 || line[j - 1] !== '\\')) { - closeBrackets++; - } - } - } - - document.getElementById("openCount").textContent = openBrackets; - document.getElementById("closeCount").textContent = closeBrackets; - - if (openBrackets <= dollarCount) { - if (closeBrackets < openBrackets) { - callError(`Error: Not all open brackets are closed. Last opened on line ${lastOpenBracketLine}.`); - } - } -} - -let caseSensitive = false; -let highlightEnabled = true; -let lineNumberingEnabled = true; - -function editorFindCase() { - caseSensitive = !caseSensitive; - callButtonChange('caseSensitiveButton', caseSensitive); - toggleHighlight(); -} - -function toggleHighlight() { - const highlightedTextDiv = document.getElementById("highlightedText"); - const text = document.getElementById("editor").value; - const searchText = document.getElementById("searchText").value; - let highlighted = text; - let matches = 0; - - if (searchText) { - try { - const flags = caseSensitive ? 'g' : 'gi'; - const regex = new RegExp(searchText, flags); - - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } catch (e) { - const escapedSearchText = searchText.replace(/[.*+?^${}()|[\\]\\\]/g, '\\$&'); - const flags = caseSensitive ? 'g' : 'gi'; - const regex = new RegExp(escapedSearchText, flags); - - highlighted = text.replace(regex, (match) => { - matches++; - return `${match}`; - }); - } - } - - if (highlightEnabled) { - // Channel & User mentions - const mentionRegex = /<@(.*?)>/g; - highlighted = highlighted.replace(mentionRegex, (match, content) => { - return `@${content}`; - }); - - const channelRegex = /<#(.*?)>/g; - highlighted = highlighted.replace(channelRegex, (match, content) => { - return `#${content}`; - }); - - // ** - const boldRegex = /\*\*(.*?)\*\*/g; - highlighted = highlighted.replace(boldRegex, (match, content) => { - return `${content}`; - }); - - // * - const italicRegex = /\*(.*?)\*/g; - highlighted = highlighted.replace(italicRegex, (match, content) => { - return `${content}`; - }); - - // ~~ - const delRegex = /~~(.*?)~~/g; - highlighted = highlighted.replace(delRegex, (match, content) => { - return `${content}`; - }); - - // __ - const underRegex = /__(.*?)__/g; - highlighted = highlighted.replace(underRegex, (match, content) => { - return `${content}`; - }); - - // ``` - const hgbCodeRegex = /```(.*?)```/g; - highlighted = highlighted.replace(hgbCodeRegex, (match, content) => { - return `${content}`; - }); - - // ` - const hgsCodeRegex = /`(.*?)`/g; - highlighted = highlighted.replace(hgsCodeRegex, (match, content) => { - return `${content}`; - }); - - // || - const spoilerRegex = /\|\|(.*?)\|\|/g; - highlighted = highlighted.replace(spoilerRegex, (match, content) => { - return `${content}`; - }); - - const highlightedText = document.getElementById('highlightedText'); - - if (highlightedText) { - highlightedText.innerHTML = highlighted; - - highlightedText.addEventListener('click', (event) => { - if (event.target.tagName === 'SPOILER') { - event.target.classList.add('spoiler-active'); - } - }); - } - - // Unixtime - const timestampRegex = //g; - highlighted = highlighted.replace(timestampRegex, (match, timestamp, format) => { - const date = new Date(parseInt(timestamp) * 1000); - let formattedDate = ""; - - switch (format) { - case 't': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'T': formattedDate = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); break; - case 'd': formattedDate = date.toLocaleDateString(); break; - case 'D': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }); break; - case 'f': formattedDate = date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'F': formattedDate = date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) + " " + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); break; - case 'R': formattedDate = getRelativeTime(date); break; - default: formattedDate = "Invalid format"; - } - return `${formattedDate}`; - }); - - // Headers - highlighted = highlighted.replace(/^# (.*)$/gm, '

    $1

    '); - highlighted = highlighted.replace(/^## (.*)$/gm, '

    $1

    '); - highlighted = highlighted.replace(/^### (.*)$/gm, '

    $1

    '); - } - - // > - const quoteRegex = /^> (.*)$/gm; - highlighted = highlighted.replace(quoteRegex, (match, content) => { - return `${content}`; - }); - - // Link - const linkRegex = /(https?:\/\/[^\s]+)/g; - highlighted = highlighted.replace(linkRegex, (url) => { - return `${url}`; - }); - - // Lines - const lines = highlighted.split('\n'); - let numberedText = ""; - if (lineNumberingEnabled) { - for (let i = 0; i < lines.length; i++) { - numberedText += `${i + 1} ${lines[i]}
    `; - } - } else { - for (let i = 0; i < lines.length; i++) { - numberedText += `${lines[i]}
    `; - } - } - - const resultsString = `

    Results: ${matches}

    `; - highlightedTextDiv.innerHTML = resultsString + numberedText; -} - -function textHighlighting() { - highlightEnabled = !highlightEnabled; - callButtonChange('findHighlightingButton', highlightEnabled); - toggleHighlight(); -} - -function changeCodeLines() { - lineNumberingEnabled = !lineNumberingEnabled; - callButtonChange('changeCodeLines', lineNumberingEnabled); - toggleHighlight(); -} - - -function getRelativeTime(date) { - const now = new Date(); - const diffInSeconds = Math.round((date - now) / 1000); - - const intervals = { - 'year': 31536000, - 'month': 2592000, - 'day': 86400, - 'hour': 3600, - 'minute': 60, - 'second': 1 - }; - - const isFuture = diffInSeconds > 0; - - let prefix = isFuture ? 'in ' : ''; - let suffix = isFuture ? '' : ' ago'; - - let absDiffInSeconds = Math.abs(diffInSeconds); - - for (const interval in intervals) { - const secondsInInterval = intervals[interval]; - const quantity = Math.floor(absDiffInSeconds / secondsInInterval); - - if (quantity >= 1) { - return prefix + quantity + ' ' + interval + (quantity > 1 ? 's' : '') + suffix; - } - } - - return isFuture ? 'Soon' : 'Just now'; -} - -function copyCodeText() { - const textarea = document.getElementById("editor"); - - if (!textarea) { - console.error("Textarea element with ID 'editor' not found."); - return; - } - - const code = textarea.value; - - navigator.clipboard.writeText(code) - .then(() => { - console.log("Copied"); - }) - .catch(err => { - console.error("Invalid object to be copied: ", err); - }); -} - - -function saveFile() { - const fileName = document.getElementById('name').value; - const finalFileName = fileName || "bdfdwikieditor"; - const fileContent = document.getElementById('editor').value; - - const blob = new Blob([fileContent], { type: 'text/plain' }); - const a = document.createElement('a'); - const url = URL.createObjectURL(blob); - - a.href = url; - a.download = finalFileName + '.txt'; - - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - - URL.revokeObjectURL(url); -} - -function nameScript() { - const textarea = document.getElementById('name'); - const count = textarea.parentNode.querySelector('span'); - - textarea.value = textarea.value.replace(/[\r\n]+/g, ''); - - if (textarea.value.length > 50) { - textarea.value = textarea.value.substring(0, 50); - } - - count.textContent = textarea.value.length + '/50'; - - if (textarea.value.length >= 50) { - count.style.color = 'red'; - } else { - count.style.color = ''; - } -} - -function typeScript() { - const nameInputVal = document.getElementById('name')?.value || ''; - const selectValue = document.querySelector('select[name="type"]')?.value || ''; - const nameLabel = document.getElementById('scriptType'); - - const errorMessages = { - empty: "Error: Name cannot be empty.", - regex: "Error: Slash command name must contain only English letters.", - length: "Error: Slash command name exceeds 32 characters.", - invalidCallback: "Error: Invalid callback name.", - slashStart: "Error: Slash command name must start with /" - }; - - deleteError(errorMessages.regex); - deleteError(errorMessages.empty); - deleteError(errorMessages.length); - deleteError(errorMessages.invalidCallback); - deleteError(errorMessages.slashStart); - - const callbackKeywords = ['$awaitedCommand', '$awaitedCommandError', '$onJoined', '$onLeave', '$onBanAdd', '$onBanRemove', '$onMessageDelete', '$onInteraction', '$alwaysReply', '$messageContains', '$reaction']; - - if (selectValue !== 'file') { - if (!nameInputVal) { - callError(errorMessages.empty, 'error', true); - } else { - deleteError(errorMessages.empty); - } - } else { - deleteError(errorMessages.empty); - } - - let commandType = 'Command'; - - if (selectValue === 'file') { - commandType = ' • File'; - } else if (selectValue === 'callback') { - commandType = ' • Callback'; - if (!callbackKeywords.some(keyword => nameInputVal.startsWith(keyword))) { - callError(errorMessages.invalidCallback, 'error', true); - } else { - deleteError(errorMessages.invalidCallback); - } - } else if (selectValue === 'slash') { - commandType = ' • Slash Command'; - - if (!nameInputVal.startsWith('/')) { - callError(errorMessages.slashStart, 'error', true); - } else { - deleteError(errorMessages.slashStart); - - const nameToCheck = nameInputVal.substring(1); - const regex = /^[a-z-]+$/; - - if (!regex.test(nameToCheck)) { - callError(errorMessages.regex, 'error', true); - } else { - deleteError(errorMessages.regex); - } - if (nameInputVal.length > 32) { - callError(errorMessages.length, 'error', true); - } else { - deleteError(errorMessages.length); - } - } - } else if (selectValue === 'auto') { - const nameToCheck = nameInputVal.substring(1); - const regex = /^[a-zA-Z-]+$/; - - if (callbackKeywords.some(keyword => nameInputVal.startsWith(keyword))) { - commandType = ' • Callback'; - } else if (nameInputVal.startsWith('/')) { - commandType = ' • Slash Command'; - if (!regex.test(nameToCheck)) { - callError(errorMessages.regex, 'error', true); - } else { - deleteError(errorMessages.regex); - } - if (nameInputVal.length > 32) { - callError(errorMessages.length, 'error', true); - } else { - deleteError(errorMessages.length); - } - } else { - commandType = ' • Command'; - } - - } else { - commandType = ' • Command'; - } - if(nameLabel) - nameLabel.textContent = 'Name' + commandType; -} - -function bdscript2() { - const editor = document.getElementById("editor"); - const languageSelect = document.querySelector('select[name="language"]'); - const scriptLanguage = languageSelect.value; - const scriptText = editor.value; - - const bdscript2Keywords = ["$try", "$endtry", "$catch", "$async", "$endasync", "$eval", "$error", "$optOff", "$elseif", "$stop", "$var"]; - - const containsBDScript2Keywords = bdscript2Keywords.some(keyword => scriptText.includes(keyword)); - - if (containsBDScript2Keywords && scriptLanguage !== "bds2") { - const firstKeyword = bdscript2Keywords.find(keyword => scriptText.includes(keyword)); - callError(`Function ${firstKeyword} is only available in BDScript2`); - } -} - -function editorAreaButtons() { - const scriptDiv = document.querySelector('.scriptdiv'); - const buttons = scriptDiv.querySelectorAll('button'); - const isHidden = buttons[0].style.display === 'none'; - - buttons.forEach(button => { - button.style.display = isHidden ? 'inline-block' : 'none'; - }); - - callButtonChange('usefulButtonsButton', isHidden); -} - - -function editorBrokeLinks() { - const links = document.getElementsByTagName('a'); - - for (let i = 0; i < links.length; i++) { - links[i].setAttribute('href', '#'); - links[i].style.pointerEvents = 'none'; - } - - callButtonChange('brokeLinksButton', 'true'); -} - -let isWrappingEnabled = false; - -function editorWrapping() { - const textarea = document.getElementById('editor'); - const findcode = document.getElementById('highlightedText'); - isWrappingEnabled = !isWrappingEnabled; - - textarea.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; - findcode.style.whiteSpace = isWrappingEnabled ? 'pre-wrap' : 'nowrap'; - - callButtonChange('textWrappingButton', isWrappingEnabled); -} - -function callButtonChange(buttonName, status) { - const button = document.getElementById(buttonName); - - if (!button) { - console.error(`Failed to find "${buttonName}" button.`); - return; - } - - const activeGradient = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(1 192 36 / 75%))'; - const inactiveGradient = 'linear-gradient(to left, rgb(255 255 255 / 40%), rgb(192 1 1 / 75%))'; - const extraGradient = 'linear-gradient(to right, rgb(255 255 255 / 40%), rgb(0 0 0 / 50%))'; - - if (buttonName === 'brokeLinksButton') { - button.style.background = extraGradient; - } else { - button.style.background = status ? activeGradient : inactiveGradient; - } -} diff --git a/src/theme/settings/apply-settings.js b/src/theme/settings/apply-settings.js index 06161e54cc6..7e8f7bd12fa 100644 --- a/src/theme/settings/apply-settings.js +++ b/src/theme/settings/apply-settings.js @@ -1,272 +1,242 @@ const DiscordThemes = { - light: { - reactionColor: "#F2F3F5", - messageTextColor: "#313338", - background: "#FFF", - }, - dark: { - reactionColor: "#202226", - messageTextColor: "#C6C7CC", - background: "#1C1D22", - }, - redmoon: { - reactionColor: "#4e0505", - background: "linear-gradient(-25deg, #240000, #740606)", - }, - nightsapphire: { - reactionColor: "#180052", - background: "linear-gradient(-25deg, #000124, #260674)", - }, - emeraldearth: { - reactionColor: "#006d3f", - background: "linear-gradient(-25deg, #0c2400, #067446)", - }, - nightviolet: { - reactionColor: "#390085", - background: "linear-gradient(-25deg, #1d0024, #350674)", - }, - oldwood: { - reactionColor: "#714400", - background: "linear-gradient(-25deg, #240f00, #744806)", - }, - azuresky: { - reactionColor: "#007162", - background: "linear-gradient(-25deg, #001a24, #067465)", - }, - cherryvelvety: { - reactionColor: "#710049", - background: "linear-gradient(-25deg, #240017, #74064d)", - }, - forestdepth: { - reactionColor: "#616d00", - background: "linear-gradient(-25deg, #222400, #687406)", - }, - nightchestnut: { - reactionColor: "#4e0505", - background: "linear-gradient(-25deg, #190024, #740606)", - }, - mosscovered: { - reactionColor: "#4b6d11", - background: "linear-gradient(-25deg, #1c2400, #4c7406)", - }, - deepruby: { - reactionColor: "#74066e", - background: "linear-gradient(-25deg, #1f0024, #74066e)", - }, - fernvalley: { - reactionColor: "#1e6d00", - background: "linear-gradient(-25deg, #00240a, #247406)", - }, - forestshadows: { - reactionColor: "#086b00", - background: "linear-gradient(-25deg, #000624, #086700 , #0a7f01)", - }, - autumnblaze: { - reactionColor: "#742006", - background: "linear-gradient(-25deg, #240800, #742006)", - }, + light: { + reactionColor: "#F2F3F5", + messageTextColor: "#313338", + background: "#FFF", + }, + dark: { + reactionColor: "#202226", + messageTextColor: "#C6C7CC", + background: "#1C1D22", + }, + redmoon: { + reactionColor: "#4e0505", + background: "linear-gradient(-25deg, #240000, #740606)", + }, + nightsapphire: { + reactionColor: "#180052", + background: "linear-gradient(-25deg, #000124, #260674)", + }, + emeraldearth: { + reactionColor: "#006d3f", + background: "linear-gradient(-25deg, #0c2400, #067446)", + }, + nightviolet: { + reactionColor: "#390085", + background: "linear-gradient(-25deg, #1d0024, #350674)", + }, + oldwood: { + reactionColor: "#714400", + background: "linear-gradient(-25deg, #240f00, #744806)", + }, + azuresky: { + reactionColor: "#007162", + background: "linear-gradient(-25deg, #001a24, #067465)", + }, + cherryvelvety: { + reactionColor: "#710049", + background: "linear-gradient(-25deg, #240017, #74064d)", + }, + forestdepth: { + reactionColor: "#616d00", + background: "linear-gradient(-25deg, #222400, #687406)", + }, + nightchestnut: { + reactionColor: "#4e0505", + background: "linear-gradient(-25deg, #190024, #740606)", + }, + mosscovered: { + reactionColor: "#4b6d11", + background: "linear-gradient(-25deg, #1c2400, #4c7406)", + }, + deepruby: { + reactionColor: "#74066e", + background: "linear-gradient(-25deg, #1f0024, #74066e)", + }, + fernvalley: { + reactionColor: "#1e6d00", + background: "linear-gradient(-25deg, #00240a, #247406)", + }, + forestshadows: { + reactionColor: "#086b00", + background: "linear-gradient(-25deg, #000624, #086700 , #0a7f01)", + }, + autumnblaze: { + reactionColor: "#742006", + background: "linear-gradient(-25deg, #240800, #742006)", + }, }; function setDiscordTheme(colorId) { - const discordMessages = document.getElementsByTagName("discord-messages"); - - const styles = { - reactionColor: "#131318", - messageTextColor: "#DDDEE1", - background: "#000", - ...(DiscordThemes[colorId] || {}), - }; - - // Callback function to execute when mutations are observed - const callback = (mutationList, observer) => { - for (const mutation of mutationList) { - if ( - mutation.type === "attributes" && - mutation.attributeName === "class" - ) { - const reactions = - document.getElementsByTagName("discord-reaction"); - const messageColors = document.querySelectorAll( - ".discord-message .discord-message-markup" - ); - - const botToApp = - document.querySelectorAll('.discord-application-tag'); - - if (styles.background) - mutation.target.style.background = styles.background; - mutation.target.style.backgroundColor = styles.exampleColor; - for (const reaction of reactions) { - // change the div which is the actual reaction - reaction.children.item(0).style.backgroundColor = - styles.reactionColor; - } - messageColors.forEach((text) => { - text.style.color = styles.messageTextColor; - }); - - botToApp.forEach(tag => { - if (tag.textContent.includes("Bot")) { - tag.textContent = tag.textContent.replace("Bot", "App"); - tag.setAttribute("aria-label", "Verified App"); - } - }); - - // Changes "00/00/0000" to "Today at 00:00". - const timestamps = document.querySelectorAll( - ".discord-message-timestamp" - ); - timestamps.forEach((timestamp) => { - var time = new Date().getTime(); - var minuteExample = new Date().getMinutes(); - var hourExample = new Date().getHours(); - const formattedMinute = - minuteExample < 10 - ? `0${minuteExample}` - : minuteExample; - const formattedHour = - hourExample < 10 ? `0${hourExample}` : hourExample; - const formattedTime = `Today at ${formattedHour}:${formattedMinute}`; - timestamp.textContent = formattedTime; - }); - } - } - }; + const discordMessages = document.getElementsByTagName("discord-messages"); + + const styles = { + reactionColor: "#131318", + messageTextColor: "#DDDEE1", + background: "#000", + ...(DiscordThemes[colorId] || {}), + }; + + // Callback function to execute when mutations are observed + const callback = (mutationList, observer) => { + for (const mutation of mutationList) { + if ( + mutation.type === "attributes" && + mutation.attributeName === "class" + ) { + const reactions = + document.getElementsByTagName("discord-reaction"); + const messageColors = document.querySelectorAll( + ".discord-message .discord-message-markup" + ); + + const botToApp = + document.querySelectorAll('.discord-application-tag'); + + if (styles.background) + mutation.target.style.background = styles.background; + mutation.target.style.backgroundColor = styles.exampleColor; + for (const reaction of reactions) { + // change the div which is the actual reaction + reaction.children.item(0).style.backgroundColor = + styles.reactionColor; + } + messageColors.forEach((text) => { + text.style.color = styles.messageTextColor; + }); + + botToApp.forEach(tag => { + if (tag.textContent.includes("Bot")) { + tag.textContent = tag.textContent.replace("Bot", "App"); + tag.setAttribute("aria-label", "Verified App"); + } + }); + + // Changes "00/00/0000" to "Today at 00:00". + const timestamps = document.querySelectorAll( + ".discord-message-timestamp" + ); + timestamps.forEach((timestamp) => { + var time = new Date().getTime(); + var minuteExample = new Date().getMinutes(); + var hourExample = new Date().getHours(); + const formattedMinute = + minuteExample < 10 + ? `0${minuteExample}` + : minuteExample; + const formattedHour = + hourExample < 10 ? `0${hourExample}` : hourExample; + const formattedTime = `Today at ${formattedHour}:${formattedMinute}`; + timestamp.textContent = formattedTime; + }); + } + } + }; - for (message of discordMessages) { - const mutObv = new MutationObserver(callback); - mutObv.observe(message, { attributes: true }); - } + for (message of discordMessages) { + const mutObv = new MutationObserver(callback); + mutObv.observe(message, {attributes: true}); + } } function applySettings() { - const snowflakes = document.querySelector(".snowflakes"); - - let data; - - try { - data = JSON.parse(localStorage.getItem("json")); - } catch {} - - const defaultData = { - "discord-example-theme": "dark", - "text-size": "60%", - "language": "en", - "text-hg": "none", - "text-font": "Open Sans, sans-serif", - "effects": "hidden", - "code-hg": { - defaultTextHighlight: { - color: 4288341353, - style: 0, - }, - fallbackHighlight: { - color: 4285791231, - style: 0, - }, - bracketHighlight: { - color: 4294921292, - style: 1, - }, - semicolonHighlight: { - color: 4294920266, - style: 1, - }, - functionsHighlights: { - $nomention: { - color: 4294932473, - style: 0, - }, - $catch: { - color: 4288905212, - style: 0, - }, - $else: { - color: 4288905212, - style: 0, - }, - $elseif: { - color: 4288905212, - style: 0, - }, - $endif: { - color: 4288905212, - style: 0, - }, - $endtry: { - color: 4288905212, - style: 0, - }, - $error: { - color: 4288905212, - style: 0, - }, - $if: { - color: 4288905212, - style: 0, - }, - $try: { - color: 4288905212, - style: 0, - }, - }, - }, - }; - - if (!data) localStorage.setItem("json", JSON.stringify(defaultData)); - data ??= defaultData; - - const html = document.querySelector("html"); - - html.style.fontFamily = data["text-font"]; - html.style.fontSize = data["text-size"]; - html.style.textShadow = data["text-hg"]; - - if (snowflakes) { - snowflakes.style.visibility = data["effects"]; - } - - document.querySelectorAll('.chapter > li.chapter-item').forEach(el => { - if (el.querySelector('div')) { - const text = el.querySelector('div').textContent.trim(); - if (text === 'Functions' || text === 'Premium') { - el.classList.add('functions-section'); - } - } - }); - - // Tools redirecting & ToS - -const currentPath = window.location.pathname; -const currentHref = window.location.href; - -if (currentPath.includes('/tools/')) { - const fileName = currentPath.split('/').pop(); - window.location.replace('https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/' + fileName); -} -else if (currentPath.includes('/terms.html') || currentHref.includes('terms.html')) { - window.location.replace('https://botdesignerdiscord.com/tos'); -} -else { - const allLinks = document.querySelectorAll('a[href]'); - - allLinks.forEach(link => { - const href = link.getAttribute('href'); - - if (href) { - if (href.indexOf('../tools/') === 0) { - const newHref = 'https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/' + href.substring(9); - link.setAttribute('href', newHref); - } - - if (href.includes('terms.html')) { - link.setAttribute('href', 'https://botdesignerdiscord.com/tos'); + const snowflakes = document.querySelector(".snowflakes"); + + let data; + + try { + data = JSON.parse(localStorage.getItem("json")); + } catch { + } + + const defaultData = { + "discord-example-theme": "dark", + "text-size": "60%", + "language": "en", + "text-hg": "none", + "text-font": "Open Sans, sans-serif", + "effects": "hidden", + "code-hg": { + defaultTextHighlight: { + color: 4288341353, + style: 0, + }, + fallbackHighlight: { + color: 4285791231, + style: 0, + }, + bracketHighlight: { + color: 4294921292, + style: 1, + }, + semicolonHighlight: { + color: 4294920266, + style: 1, + }, + functionsHighlights: { + $nomention: { + color: 4294932473, + style: 0, + }, + $catch: { + color: 4288905212, + style: 0, + }, + $else: { + color: 4288905212, + style: 0, + }, + $elseif: { + color: 4288905212, + style: 0, + }, + $endif: { + color: 4288905212, + style: 0, + }, + $endtry: { + color: 4288905212, + style: 0, + }, + $error: { + color: 4288905212, + style: 0, + }, + $if: { + color: 4288905212, + style: 0, + }, + $try: { + color: 4288905212, + style: 0, + }, + }, + }, + }; + + if (!data) localStorage.setItem("json", JSON.stringify(defaultData)); + data ??= defaultData; + + const html = document.querySelector("html"); + + html.style.fontFamily = data["text-font"]; + html.style.fontSize = data["text-size"]; + html.style.textShadow = data["text-hg"]; + + if (snowflakes) { + snowflakes.style.visibility = data["effects"]; + } + + document.querySelectorAll('.chapter > li.chapter-item').forEach(el => { + if (el.querySelector('div')) { + const text = el.querySelector('div').textContent.trim(); + if (text === 'Functions' || text === 'Premium') { + el.classList.add('functions-section'); } } }); -} - - setDiscordTheme(data["discord-example-theme"]); + + setDiscordTheme(data["discord-example-theme"]); } applySettings(); diff --git a/src/tools.md b/src/tools.md new file mode 100644 index 00000000000..720abca72e7 --- /dev/null +++ b/src/tools.md @@ -0,0 +1,17 @@ +# Useful Tools + +Here is list of useful tools that can help you in your bot development process: + +## Official Bot Designer For Discord Tools +- **[Permission calculator](https://botdesignerdiscord.com/tools/permission-calculator)** - A tool to help you calculate the required permissions for your bot based on its functionalities. +- **[Snowflake decoder](https://botdesignerdiscord.com/tools/snowflake-decoder)** - A tool to decode Discord snowflakes into human-readable information. +- **[BDScript editor](https://botdesignerdiscord.com/tools/playground)** - An online editor for writing BDScript code snippets. + +### Community Tools +Please note that these tools are developed by the community and are not officially affiliated with Bot Designer For Discord. +We do not provide support for these tools, so we cannot guarantee their functionality. + +- **[Timestamp utils](https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/timestamp.html)** +- **[Permissions calculator](https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/permissionscalculator.html)** +- **[BDScript editor](https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/editor.html)** +- **[Color utils](https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/color.html)** diff --git a/src/tools/color.md b/src/tools/color.md deleted file mode 100644 index 45e55798de8..00000000000 --- a/src/tools/color.md +++ /dev/null @@ -1,7 +0,0 @@ - - -Redirectig to https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/color.html diff --git a/src/tools/editor.md b/src/tools/editor.md deleted file mode 100644 index c6b357012c1..00000000000 --- a/src/tools/editor.md +++ /dev/null @@ -1,7 +0,0 @@ - - -Redirecting to https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/editor.html diff --git a/src/tools/permissionscalculator.md b/src/tools/permissionscalculator.md deleted file mode 100644 index 46dbcd3ac70..00000000000 --- a/src/tools/permissionscalculator.md +++ /dev/null @@ -1,7 +0,0 @@ - - -Redirecting to https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/permissionscalculator.html diff --git a/src/tools/timestamp.md b/src/tools/timestamp.md deleted file mode 100644 index 61bc2395f6a..00000000000 --- a/src/tools/timestamp.md +++ /dev/null @@ -1,7 +0,0 @@ - - -Redirecting to https://bdfd-tool.github.io/bdfd-wiki/nightly/tools/timestamp.html From d67d75017dd479eb9c4c5a3911914dafb275c6e2 Mon Sep 17 00:00:00 2001 From: Jakub Tomana Date: Sun, 25 Jan 2026 20:38:41 +0100 Subject: [PATCH 1177/1179] feature: Add guidelines to CONTRIBUTING.md --- CONTRIBUTING.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d216ca6ce4e..d2be8404f55 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,6 +8,13 @@ Hey! 👋 Thanks for checking out. If you would like to contribute to this repos ## Guidelines +> **IMPORTANT: Pull requests will be REJECTED if they:** +> - **Mix JavaScript/HTML code changes with wiki content changes.** These must be submitted as separate pull requests. Code changes go in one PR, documentation/wiki content changes go in another. +> - **Contain an excessive number of changes (e.g., 100+ file modifications).** Large pull requests are impossible to review properly and will not be accepted. Break your contributions into smaller, focused pull requests that can be reviewed individually. +> - **Add interactive tools or complex JavaScript applications.** This wiki is for **documentation only**, not a platform for hosting interactive tools. Such tools become a maintenance burden over time. If you have created a useful community tool, we can link to it from the community tools page instead of embedding it in the wiki. +> +> This policy exists to ensure quality reviews and maintain the integrity of the wiki. No exceptions. + General guidelines to keep in mind when contributing : - All file names must be in "[lowerCamelCase](https://wiki.c2.com/?LowerCamelCase)" format (i.e `fileName.md`). From 6a5f8640203db8bc9a348470100bef74d17c109a Mon Sep 17 00:00:00 2001 From: Jakub Tomana Date: Sun, 25 Jan 2026 20:40:37 +0100 Subject: [PATCH 1178/1179] feature: Update summary --- src/SUMMARY.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 29b216fb019..e2d70f12ad0 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -4,7 +4,6 @@ [Settings](./settings.md) [Changelog](./CHANGELOG.md) [Flowchart Changelog](./FLOWCHART_CHANGELOG.md) -[Terms of Service](https://botdesignerdiscord.com/tos) [Entity Transfer Policy](./entityTransferPolicy.md) --- From c19cca4a82328b642318e24d88a117bc3eec11ce Mon Sep 17 00:00:00 2001 From: Jakub Tomana Date: Sun, 25 Jan 2026 20:50:52 +0100 Subject: [PATCH 1179/1179] fix: Reduce layout shift during opening page --- src/settings.md | 9 --- src/theme/css/chrome.css | 114 --------------------------- src/theme/index.hbs | 35 ++++---- src/theme/settings/apply-settings.js | 13 --- src/theme/settings/index.js | 32 -------- 5 files changed, 19 insertions(+), 184 deletions(-) diff --git a/src/settings.md b/src/settings.md index 84f73461c17..744abef32e6 100644 --- a/src/settings.md +++ b/src/settings.md @@ -43,15 +43,6 @@ Let's customize your experience in our Bot Designer For Discord wiki world!
    -
    -

    Effects

    -

    It's only decoration for wiki.

    -
    - -
    -

    "Enable" (Disabled)

    -
    -

    Discord Example

    Let’s give our Discord example previews a color makeover to make them look better.

    diff --git a/src/theme/css/chrome.css b/src/theme/css/chrome.css index a126eb0fe5a..31d79a7cb0f 100644 --- a/src/theme/css/chrome.css +++ b/src/theme/css/chrome.css @@ -1339,120 +1339,6 @@ ul#searchresults span.teaser em { background: hsl(0deg 0% 100% / 8%); } -/* Snowflake animation | Winter event */ - -.snowflakes { - z-index: 1000; - visibility: hidden; - width: 200%; - height: 100%; - position: fixed; - top: -150px; - left: -350px; - pointer-events: none; -} - -.snowflakes i, -.snowflakes i:after, -.snowflakes i:before { - background: white; -} - -.snowflakes i:after, -.snowflakes i:before { - height: 100%; - width: 100%; - content: "."; - position: absolute; - top: 0px; - left: 0px; - -webkit-transform: rotate(120deg); -} - -.snowflakes i:before { - -webkit-transform: rotate(240deg); -} - -@-webkit-keyframes snowflakes { - 0% { - -webkit-transform: translate3d(0, 0, 0) rotate(0deg) scale(0.6); - } - 100% { - -webkit-transform: translate3d(15px, 1200px, 0px) rotate(360deg) - scale(0.6); - } -} - -.snowflakes i { - display: inline-block; - -webkit-animation: snowflakes 3s linear 2s 20; - -moz-animation: snowflakes 3s linear 2s 20; - position: relative; -} - -.snowflakes i:nth-child(3n) { - width: 22px; - height: 6px; - -webkit-animation-duration: 6s; - -webkit-animation-iteration-count: infinite; -} -.snowflakes i:nth-child(3n + 1) { - width: 30px; - height: 7px; - -webkit-animation-duration: 8s; - -webkit-animation-iteration-count: infinite; -} - -.snowflakes i:nth-child(3n + 2) { - width: 34px; - height: 10px; - -webkit-animation-duration: 10s; - -webkit-animation-iteration-count: infinite; -} - -.snowflakes i:nth-child(7n) { - opacity: 0.3; - -webkit-animation-delay: 0s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: ease-in; -} -.snowflakes i:nth-child(7n + 1) { - opacity: 0.4; - -webkit-animation-delay: 1s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: ease-out; -} -.snowflakes i:nth-child(7n + 2) { - opacity: 0.5; - -webkit-animation-delay: 1.5s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; -} -.snowflakes i:nth-child(7n + 3) { - opacity: 0.6; - -webkit-animation-delay: 2s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: ease-in; -} -.snowflakes i:nth-child(7n + 4) { - opacity: 0.7; - -webkit-animation-delay: 2.5s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; -} -.snowflakes i:nth-child(7n + 5) { - opacity: 0.8; - -webkit-animation-delay: 3s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: ease-out; -} -.snowflakes i:nth-child(7n + 6) { - opacity: 0.9; - -webkit-animation-delay: 3.5s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: ease-in; -} - /* Responsive */ @media (max-width: 768px) { .content-card { diff --git a/src/theme/index.hbs b/src/theme/index.hbs index a9c967d19ab..6b12f4e26fe 100644 --- a/src/theme/index.hbs +++ b/src/theme/index.hbs @@ -21,6 +21,21 @@ + + + @@ -33,12 +48,12 @@ - + + + - - + href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;0,700;0,800;1,300;1,400;1,600;1,700;1,800&family=Source+Code+Pro:wght@500&family=Montserrat&display=swap"> @@ -182,18 +197,6 @@ }); -
    - - - - - - - - - -
    -