You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

88 lines
3.6 KiB

import {ApplicationCommandOptionType, ApplicationCommandSubCommandData, ChatInputCommandInteraction} from "discord.js"
import {SubcommandData} from "../types"
import {UsersTable} from "../../database/users.js"
export class CharacterCreateCommand extends SubcommandData {
readonly definition: ApplicationCommandSubCommandData = {
name: "create",
type: ApplicationCommandOptionType.Subcommand,
description: "Begins the process of creating a new character. Omit parameters for interactive process.",
options: [
{
name: "name",
type: ApplicationCommandOptionType.String,
description: "The character's name, 1-20 characters. You can change this later.",
required: false,
maxLength: 20,
minLength: 1,
},
{
name: "title",
type: ApplicationCommandOptionType.String,
description: "The character's title, with @@ where your character's name goes. @@ alone means no title.",
required: false,
maxLength: 30,
minLength: 2,
},
{
name: "pronouns",
type: ApplicationCommandOptionType.String,
description: "Your character's pronouns. Don't worry, you can change this later.",
required: false,
autocomplete: true,
},
{
name: "gender",
type: ApplicationCommandOptionType.String,
description: "Your character's pronouns. Don't worry, you can change this later.",
required: false,
maxLength: 20,
minLength: 1,
},
{
name: "difficulty",
type: ApplicationCommandOptionType.String,
description: "The difficulty of reformation. Don't worry, you can change this later.",
required: false,
autocomplete: true,
},
{
name: "preference",
type: ApplicationCommandOptionType.String,
description: "What role(s) your character is able to play in vore. Don't worry, you can change this later.",
required: false,
autocomplete: true,
},
{
name: "types",
type: ApplicationCommandOptionType.String,
description: "The type or types that describe your character. Don't worry, you can change this later.",
required: false,
autocomplete: true,
},
{
name: "stats",
type: ApplicationCommandOptionType.String,
description: "Slash(/)-delimited base stats: Confidence/Health/Stamina/Brawn/Durability/Intensity/Resilience/Speed",
required: false,
},
],
}
private readonly _users: UsersTable
constructor({users}: { users: UsersTable }) {
super()
this._users = users
}
async execute(b: ChatInputCommandInteraction) {
await b.deferReply({ephemeral: true})
// create database interfacing code, using this format:
// INSERT INTO character_creation () VALUES () ON CONFLICT DO UPDATE SET (excluded.field IS NULL ? field : excluded.field)
// then prompt the user to fill in the first null field, using a modal to input the text fields
await b.followUp({
ephemeral: true,
content: "Zz... mn?",
})
}
}