mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-05-23 09:35:02 +00:00
finished schema & start generating
This commit is contained in:
parent
2734172d27
commit
543ccda3d3
3 changed files with 120 additions and 2 deletions
|
@ -8,7 +8,7 @@ import { GuildLogs } from "../../data/GuildLogs";
|
||||||
import { GuildSavedMessages } from "../../data/GuildSavedMessages";
|
import { GuildSavedMessages } from "../../data/GuildSavedMessages";
|
||||||
import { GuildTags } from "../../data/GuildTags";
|
import { GuildTags } from "../../data/GuildTags";
|
||||||
import { mapToPublicFn } from "../../pluginUtils";
|
import { mapToPublicFn } from "../../pluginUtils";
|
||||||
import { convertDelayStringToMS } from "../../utils";
|
import { convertDelayStringToMS, trimPluginDescription } from "../../utils";
|
||||||
import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
|
import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
|
||||||
import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
|
import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
|
||||||
import { TagCreateCmd } from "./commands/TagCreateCmd";
|
import { TagCreateCmd } from "./commands/TagCreateCmd";
|
||||||
|
@ -22,6 +22,8 @@ import { onMessageCreate } from "./util/onMessageCreate";
|
||||||
import { onMessageDelete } from "./util/onMessageDelete";
|
import { onMessageDelete } from "./util/onMessageDelete";
|
||||||
import { renderTagBody } from "./util/renderTagBody";
|
import { renderTagBody } from "./util/renderTagBody";
|
||||||
import { LogsPlugin } from "../Logs/LogsPlugin";
|
import { LogsPlugin } from "../Logs/LogsPlugin";
|
||||||
|
import { generateTemplateMarkdown } from "./docs";
|
||||||
|
import { TemplateFunctions } from "./templateFunctions";
|
||||||
|
|
||||||
const defaultOptions: PluginOptions<TagsPluginType> = {
|
const defaultOptions: PluginOptions<TagsPluginType> = {
|
||||||
config: {
|
config: {
|
||||||
|
@ -58,6 +60,18 @@ export const TagsPlugin = zeppelinGuildPlugin<TagsPluginType>()({
|
||||||
showInDocs: true,
|
showInDocs: true,
|
||||||
info: {
|
info: {
|
||||||
prettyName: "Tags",
|
prettyName: "Tags",
|
||||||
|
description: trimPluginDescription(`
|
||||||
|
Tags are a way to store and reuse information.
|
||||||
|
`),
|
||||||
|
configurationGuide: trimPluginDescription(`
|
||||||
|
### Template Functions
|
||||||
|
You can use template functions in your tags. These functions are called when the tag is rendered.
|
||||||
|
You can use these functions to render dynamic content, or to access information from the message and/or user calling the tag.
|
||||||
|
You use them by adding a \`{}\` on your tag.
|
||||||
|
|
||||||
|
### Available Functions
|
||||||
|
${generateTemplateMarkdown(TemplateFunctions)}
|
||||||
|
`),
|
||||||
},
|
},
|
||||||
|
|
||||||
configSchema: ConfigSchema,
|
configSchema: ConfigSchema,
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
import { TemplateFunction } from "./types";
|
||||||
|
|
||||||
|
export function generateTemplateMarkdown(definitions: TemplateFunction[]): string {
|
||||||
|
const table = definitions
|
||||||
|
.map(def => {
|
||||||
|
const argsString = def.signature ?? `(${def.arguments.join(", ")})`;
|
||||||
|
const usage = def.signature ? `| ${def.signature} |` : argsString;
|
||||||
|
const exampl = def.examples ? def.examples.map(ex => `> ${ex}`).join("\n") : "";
|
||||||
|
return `
|
||||||
|
#### ${def.name}
|
||||||
|
\`${usage}\`
|
||||||
|
**${def.description}**
|
||||||
|
${exampl}
|
||||||
|
`;
|
||||||
|
})
|
||||||
|
.join("\n\n");
|
||||||
|
|
||||||
|
return table;
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
import { TemplateFunction } from "./types";
|
import { TemplateFunction } from "./types";
|
||||||
|
|
||||||
export const functions: TemplateFunction[] = [
|
// TODO: Generate this dynamically, lmao
|
||||||
|
export const TemplateFunctions: TemplateFunction[] = [
|
||||||
{
|
{
|
||||||
name: "info",
|
name: "info",
|
||||||
description: "Checks if a condition is true or false and returns the corresponding ifTrue or ifFalse",
|
description: "Checks if a condition is true or false and returns the corresponding ifTrue or ifFalse",
|
||||||
|
@ -78,4 +79,88 @@ export const functions: TemplateFunction[] = [
|
||||||
arguments: ["argument1", "argument2"],
|
arguments: ["argument1", "argument2"],
|
||||||
examples: ["lte(2, 2)"],
|
examples: ["lte(2, 2)"],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "slice",
|
||||||
|
description: "Slices a string argument at start and end",
|
||||||
|
returnValue: "string",
|
||||||
|
arguments: ["string", "start", "end"],
|
||||||
|
examples: ['slice("Hello World", 0, 5)'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "lower",
|
||||||
|
description: "Converts a string argument to lowercase",
|
||||||
|
returnValue: "string",
|
||||||
|
arguments: ["string"],
|
||||||
|
examples: ['lower("Hello World")'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "upper",
|
||||||
|
description: "Converts a string argument to uppercase",
|
||||||
|
returnValue: "string",
|
||||||
|
arguments: ["string"],
|
||||||
|
examples: ['upper("Hello World")'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "upperFirst",
|
||||||
|
description: "Converts the first character of a string argument to uppercase",
|
||||||
|
returnValue: "string",
|
||||||
|
arguments: ["string"],
|
||||||
|
examples: ['upperFirst("hello World")'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "rand",
|
||||||
|
description: "Returns a random number between from and to, optionally using seed",
|
||||||
|
returnValue: "number",
|
||||||
|
arguments: ["from", "to", "seed"],
|
||||||
|
examples: ["rand(1, 10)"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "round",
|
||||||
|
description: "Rounds a number to the given decimal places",
|
||||||
|
returnValue: "number",
|
||||||
|
arguments: ["number", "decimalPlaces"],
|
||||||
|
examples: ["round(1.2345, 2)"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "add",
|
||||||
|
description: "Adds two or more numbers",
|
||||||
|
returnValue: "number",
|
||||||
|
arguments: ["number1", "number2", "..."],
|
||||||
|
examples: ["add(1, 2)"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sub",
|
||||||
|
description: "Subtracts two or more numbers",
|
||||||
|
returnValue: "number",
|
||||||
|
arguments: ["number1", "number2", "..."],
|
||||||
|
examples: ["sub(3, 1)"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "mul",
|
||||||
|
description: "Multiplies two or more numbers",
|
||||||
|
returnValue: "number",
|
||||||
|
arguments: ["number1", "number2", "..."],
|
||||||
|
examples: ["mul(2, 3)"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "div",
|
||||||
|
description: "Divides two or more numbers",
|
||||||
|
returnValue: "number",
|
||||||
|
arguments: ["number1", "number2", "..."],
|
||||||
|
examples: ["div(6, 2)"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "cases",
|
||||||
|
description: "Returns the argument at position",
|
||||||
|
returnValue: "any",
|
||||||
|
arguments: ["position", "argument1", "argument2", "..."],
|
||||||
|
examples: ['cases(1, "Hello", "World")'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "choose",
|
||||||
|
description: "Returns a random argument",
|
||||||
|
returnValue: "any",
|
||||||
|
arguments: ["argument1", "argument2", "..."],
|
||||||
|
examples: ['choose("Hello", "World", "!")'],
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue