add supertonic style option
This commit is contained in:
parent
2f4885305e
commit
86fa4a01d3
15 changed files with 105 additions and 16 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -10,5 +10,4 @@ cache
|
||||||
db
|
db
|
||||||
docker-compose.yml
|
docker-compose.yml
|
||||||
|
|
||||||
target/
|
target/
|
||||||
test.wav
|
|
||||||
0
eslint.config.js
Normal file
0
eslint.config.js
Normal file
|
|
@ -12,7 +12,7 @@ export default defineCommand(
|
||||||
});
|
});
|
||||||
|
|
||||||
const profile = await getUserProfile(interaction.user.id);
|
const profile = await getUserProfile(interaction.user.id);
|
||||||
setUserNya(interaction.user.id, !profile.nya);
|
await setUserNya(interaction.user.id, !profile.nya);
|
||||||
|
|
||||||
await interaction.editReply(profile.nya ? "냐앙..." : "냐앙!!");
|
await interaction.editReply(profile.nya ? "냐앙..." : "냐앙!!");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
29
packages/bot/commands/setSupertonicStyle.ts
Normal file
29
packages/bot/commands/setSupertonicStyle.ts
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
import { ChatInputCommandInteraction, MessageFlags, SlashCommandSubcommandBuilder } from "discord.js";
|
||||||
|
import { defineCommand } from "../command";
|
||||||
|
import { setUserSupertonicStyle } from "../db";
|
||||||
|
import { SUPERTONIC_STYLE_LIST } from "../../env";
|
||||||
|
|
||||||
|
export default defineCommand(
|
||||||
|
new SlashCommandSubcommandBuilder()
|
||||||
|
.setName("슈퍼토닉목소리")
|
||||||
|
.setDescription("예주의 슈퍼토닉 목소리 스타일을 설정해요")
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setName("style")
|
||||||
|
.setDescription("사용할수 있는 목소리들이에요")
|
||||||
|
.setRequired(true)
|
||||||
|
.addChoices(
|
||||||
|
...SUPERTONIC_STYLE_LIST
|
||||||
|
)
|
||||||
|
),
|
||||||
|
async (interaction: ChatInputCommandInteraction): Promise<any> => {
|
||||||
|
await interaction.deferReply({
|
||||||
|
flags: [MessageFlags.Ephemeral]
|
||||||
|
});
|
||||||
|
|
||||||
|
const style = interaction.options.getString("voice") as string;
|
||||||
|
setUserSupertonicStyle(interaction.user.id, style);
|
||||||
|
|
||||||
|
await interaction.editReply("예주의 목소리 스타일을 변경했어요!");
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
@ -24,7 +24,7 @@ export default defineCommand(
|
||||||
});
|
});
|
||||||
|
|
||||||
const voice = interaction.options.getString("voice") as Voice;
|
const voice = interaction.options.getString("voice") as Voice;
|
||||||
setUserVoice(interaction.user.id, voice);
|
await setUserVoice(interaction.user.id, voice);
|
||||||
|
|
||||||
await interaction.editReply("예주의 목소리를 변경했어요!");
|
await interaction.editReply("예주의 목소리를 변경했어요!");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,21 @@ export async function setUserNya(userId: string, nya: boolean): Promise<void> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function setUserSupertonicStyle(userId: string, style: string): Promise<void> {
|
||||||
|
await prisma.discordUserProfile.upsert({
|
||||||
|
where: {
|
||||||
|
userId: userId
|
||||||
|
},
|
||||||
|
update: {
|
||||||
|
userSupertonicStyle: style
|
||||||
|
},
|
||||||
|
create: {
|
||||||
|
userId: userId,
|
||||||
|
userSupertonicStyle: style
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export async function setUserVoice(userId: string, voice: Voice): Promise<void> {
|
export async function setUserVoice(userId: string, voice: Voice): Promise<void> {
|
||||||
await prisma.discordUserProfile.upsert({
|
await prisma.discordUserProfile.upsert({
|
||||||
where: {
|
where: {
|
||||||
|
|
@ -52,7 +67,7 @@ export async function setUserVoice(userId: string, voice: Voice): Promise<void>
|
||||||
},
|
},
|
||||||
create: {
|
create: {
|
||||||
userId: userId,
|
userId: userId,
|
||||||
voice: voice
|
voice: voice
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import { getUserProfile, hasGuildReadChannel } from "../db";
|
||||||
import { defineEvent } from "../event";
|
import { defineEvent } from "../event";
|
||||||
import { playVoice, PlayVoiceOptions } from "../tts";
|
import { playVoice, PlayVoiceOptions } from "../tts";
|
||||||
import { Voice } from "../../db/generated/prisma/enums";
|
import { Voice } from "../../db/generated/prisma/enums";
|
||||||
|
import { SUPERTONIC_DEFAULT_VOICE } from "../../env";
|
||||||
|
|
||||||
export default defineEvent("messageCreate", async (message) => {
|
export default defineEvent("messageCreate", async (message) => {
|
||||||
if (message.author.bot)
|
if (message.author.bot)
|
||||||
|
|
@ -20,7 +21,7 @@ export default defineEvent("messageCreate", async (message) => {
|
||||||
|
|
||||||
let content = message.cleanContent;
|
let content = message.cleanContent;
|
||||||
let voice: Voice | null = null
|
let voice: Voice | null = null
|
||||||
let options: PlayVoiceOptions | undefined = undefined;
|
let options: PlayVoiceOptions = {};
|
||||||
let matched: RegExpMatchArray | null = null;
|
let matched: RegExpMatchArray | null = null;
|
||||||
if (content.startsWith("$t ")) {
|
if (content.startsWith("$t ")) {
|
||||||
voice = "TypeCast";
|
voice = "TypeCast";
|
||||||
|
|
@ -28,15 +29,18 @@ export default defineEvent("messageCreate", async (message) => {
|
||||||
voice = "Papago";
|
voice = "Papago";
|
||||||
} else if (matched = content.match(/^\$s(\S*) /)) {
|
} else if (matched = content.match(/^\$s(\S*) /)) {
|
||||||
voice = "Supertonic";
|
voice = "Supertonic";
|
||||||
let style: string | undefined = undefined
|
|
||||||
if (matched[1].length) {
|
if (matched[1].length) {
|
||||||
style = matched[1]
|
options.supertonicStyleId = matched[1]
|
||||||
}
|
}
|
||||||
options = { supertonicStyleId: style };
|
|
||||||
} else if (content.match(/^\$\s/)) {
|
} else if (content.match(/^\$\s/)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (profile.userSupertonicStyle.length) {
|
||||||
|
options.supertonicStyleId ??= profile.userSupertonicStyle;
|
||||||
|
}
|
||||||
|
options.supertonicStyleId ??= SUPERTONIC_DEFAULT_VOICE;
|
||||||
|
|
||||||
if (voice) {
|
if (voice) {
|
||||||
content = content.replace(/^\$\S+\s+/, "")
|
content = content.replace(/^\$\S+\s+/, "")
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,6 @@ export async function playVoice(
|
||||||
throw new Error(`Unknown voice type: ${voice}`);
|
throw new Error(`Unknown voice type: ${voice}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VoiceQueue.fromConnection(connection).enqueue(
|
VoiceQueue.fromConnection(connection).enqueue(
|
||||||
TTSModelBase.bufferToAudioResource(voiceBuffer)
|
TTSModelBase.bufferToAudioResource(voiceBuffer)
|
||||||
);
|
);
|
||||||
|
|
@ -112,7 +111,7 @@ export async function playVoice(
|
||||||
export async function skipCurrentVoice(guild: Guild): Promise<boolean> {
|
export async function skipCurrentVoice(guild: Guild): Promise<boolean> {
|
||||||
let connection = await getOrCreateVoiceConnection(guild);
|
let connection = await getOrCreateVoiceConnection(guild);
|
||||||
if (!connection)
|
if (!connection)
|
||||||
throw new Error("Yaeju is not joined VoiceChat");
|
throw new Error("YaejuNyang is not joined VoiceChat");
|
||||||
|
|
||||||
const vqueue = VoiceQueue.fromConnection(connection);
|
const vqueue = VoiceQueue.fromConnection(connection);
|
||||||
if (vqueue.hasNext()) {
|
if (vqueue.hasNext()) {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = {
|
||||||
"clientVersion": "7.3.0",
|
"clientVersion": "7.3.0",
|
||||||
"engineVersion": "9d6ad21cbbceab97458517b147a6a09ff43aa735",
|
"engineVersion": "9d6ad21cbbceab97458517b147a6a09ff43aa735",
|
||||||
"activeProvider": "postgresql",
|
"activeProvider": "postgresql",
|
||||||
"inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../packages/db/generated/prisma\"\n specifying = [\"prismaSchemaFolder\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel DiscordUserProfile {\n id String @id @default(cuid())\n userId String @unique\n voice Voice @default(Papago)\n nya Boolean @default(false)\n canTypecast Boolean @default(false)\n}\n\nmodel DiscordGuildProfile {\n id String @id @default(cuid())\n guildId String @unique\n readChannel String[] @default([])\n}\n\nenum Voice {\n TypeCast\n Papago\n Supertonic\n}\n",
|
"inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../packages/db/generated/prisma\"\n specifying = [\"prismaSchemaFolder\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel DiscordUserProfile {\n id String @id @default(cuid())\n userId String @unique\n voice Voice @default(Papago)\n nya Boolean @default(false)\n canTypecast Boolean @default(false)\n userSupertonicStyle String @default(\"\")\n}\n\nmodel DiscordGuildProfile {\n id String @id @default(cuid())\n guildId String @unique\n readChannel String[] @default([])\n}\n\nenum Voice {\n TypeCast\n Papago\n Supertonic\n}\n",
|
||||||
"runtimeDataModel": {
|
"runtimeDataModel": {
|
||||||
"models": {},
|
"models": {},
|
||||||
"enums": {},
|
"enums": {},
|
||||||
|
|
@ -28,7 +28,7 @@ const config: runtime.GetPrismaClientConfig = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
config.runtimeDataModel = JSON.parse("{\"models\":{\"DiscordUserProfile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"voice\",\"kind\":\"enum\",\"type\":\"Voice\"},{\"name\":\"nya\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"canTypecast\",\"kind\":\"scalar\",\"type\":\"Boolean\"}],\"dbName\":null},\"DiscordGuildProfile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"guildId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"readChannel\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
|
config.runtimeDataModel = JSON.parse("{\"models\":{\"DiscordUserProfile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"voice\",\"kind\":\"enum\",\"type\":\"Voice\"},{\"name\":\"nya\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"canTypecast\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"userSupertonicStyle\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"DiscordGuildProfile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"guildId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"readChannel\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
|
||||||
|
|
||||||
async function decodeBase64AsWasm(wasmBase64: string): Promise<WebAssembly.Module> {
|
async function decodeBase64AsWasm(wasmBase64: string): Promise<WebAssembly.Module> {
|
||||||
const { Buffer } = await import('node:buffer')
|
const { Buffer } = await import('node:buffer')
|
||||||
|
|
|
||||||
|
|
@ -597,7 +597,8 @@ export const DiscordUserProfileScalarFieldEnum = {
|
||||||
userId: 'userId',
|
userId: 'userId',
|
||||||
voice: 'voice',
|
voice: 'voice',
|
||||||
nya: 'nya',
|
nya: 'nya',
|
||||||
canTypecast: 'canTypecast'
|
canTypecast: 'canTypecast',
|
||||||
|
userSupertonicStyle: 'userSupertonicStyle'
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
export type DiscordUserProfileScalarFieldEnum = (typeof DiscordUserProfileScalarFieldEnum)[keyof typeof DiscordUserProfileScalarFieldEnum]
|
export type DiscordUserProfileScalarFieldEnum = (typeof DiscordUserProfileScalarFieldEnum)[keyof typeof DiscordUserProfileScalarFieldEnum]
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,8 @@ export const DiscordUserProfileScalarFieldEnum = {
|
||||||
userId: 'userId',
|
userId: 'userId',
|
||||||
voice: 'voice',
|
voice: 'voice',
|
||||||
nya: 'nya',
|
nya: 'nya',
|
||||||
canTypecast: 'canTypecast'
|
canTypecast: 'canTypecast',
|
||||||
|
userSupertonicStyle: 'userSupertonicStyle'
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
export type DiscordUserProfileScalarFieldEnum = (typeof DiscordUserProfileScalarFieldEnum)[keyof typeof DiscordUserProfileScalarFieldEnum]
|
export type DiscordUserProfileScalarFieldEnum = (typeof DiscordUserProfileScalarFieldEnum)[keyof typeof DiscordUserProfileScalarFieldEnum]
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ export type DiscordUserProfileMinAggregateOutputType = {
|
||||||
voice: $Enums.Voice | null
|
voice: $Enums.Voice | null
|
||||||
nya: boolean | null
|
nya: boolean | null
|
||||||
canTypecast: boolean | null
|
canTypecast: boolean | null
|
||||||
|
userSupertonicStyle: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileMaxAggregateOutputType = {
|
export type DiscordUserProfileMaxAggregateOutputType = {
|
||||||
|
|
@ -38,6 +39,7 @@ export type DiscordUserProfileMaxAggregateOutputType = {
|
||||||
voice: $Enums.Voice | null
|
voice: $Enums.Voice | null
|
||||||
nya: boolean | null
|
nya: boolean | null
|
||||||
canTypecast: boolean | null
|
canTypecast: boolean | null
|
||||||
|
userSupertonicStyle: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileCountAggregateOutputType = {
|
export type DiscordUserProfileCountAggregateOutputType = {
|
||||||
|
|
@ -46,6 +48,7 @@ export type DiscordUserProfileCountAggregateOutputType = {
|
||||||
voice: number
|
voice: number
|
||||||
nya: number
|
nya: number
|
||||||
canTypecast: number
|
canTypecast: number
|
||||||
|
userSupertonicStyle: number
|
||||||
_all: number
|
_all: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -56,6 +59,7 @@ export type DiscordUserProfileMinAggregateInputType = {
|
||||||
voice?: true
|
voice?: true
|
||||||
nya?: true
|
nya?: true
|
||||||
canTypecast?: true
|
canTypecast?: true
|
||||||
|
userSupertonicStyle?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileMaxAggregateInputType = {
|
export type DiscordUserProfileMaxAggregateInputType = {
|
||||||
|
|
@ -64,6 +68,7 @@ export type DiscordUserProfileMaxAggregateInputType = {
|
||||||
voice?: true
|
voice?: true
|
||||||
nya?: true
|
nya?: true
|
||||||
canTypecast?: true
|
canTypecast?: true
|
||||||
|
userSupertonicStyle?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileCountAggregateInputType = {
|
export type DiscordUserProfileCountAggregateInputType = {
|
||||||
|
|
@ -72,6 +77,7 @@ export type DiscordUserProfileCountAggregateInputType = {
|
||||||
voice?: true
|
voice?: true
|
||||||
nya?: true
|
nya?: true
|
||||||
canTypecast?: true
|
canTypecast?: true
|
||||||
|
userSupertonicStyle?: true
|
||||||
_all?: true
|
_all?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -153,6 +159,7 @@ export type DiscordUserProfileGroupByOutputType = {
|
||||||
voice: $Enums.Voice
|
voice: $Enums.Voice
|
||||||
nya: boolean
|
nya: boolean
|
||||||
canTypecast: boolean
|
canTypecast: boolean
|
||||||
|
userSupertonicStyle: string
|
||||||
_count: DiscordUserProfileCountAggregateOutputType | null
|
_count: DiscordUserProfileCountAggregateOutputType | null
|
||||||
_min: DiscordUserProfileMinAggregateOutputType | null
|
_min: DiscordUserProfileMinAggregateOutputType | null
|
||||||
_max: DiscordUserProfileMaxAggregateOutputType | null
|
_max: DiscordUserProfileMaxAggregateOutputType | null
|
||||||
|
|
@ -182,6 +189,7 @@ export type DiscordUserProfileWhereInput = {
|
||||||
voice?: Prisma.EnumVoiceFilter<"DiscordUserProfile"> | $Enums.Voice
|
voice?: Prisma.EnumVoiceFilter<"DiscordUserProfile"> | $Enums.Voice
|
||||||
nya?: Prisma.BoolFilter<"DiscordUserProfile"> | boolean
|
nya?: Prisma.BoolFilter<"DiscordUserProfile"> | boolean
|
||||||
canTypecast?: Prisma.BoolFilter<"DiscordUserProfile"> | boolean
|
canTypecast?: Prisma.BoolFilter<"DiscordUserProfile"> | boolean
|
||||||
|
userSupertonicStyle?: Prisma.StringFilter<"DiscordUserProfile"> | string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileOrderByWithRelationInput = {
|
export type DiscordUserProfileOrderByWithRelationInput = {
|
||||||
|
|
@ -190,6 +198,7 @@ export type DiscordUserProfileOrderByWithRelationInput = {
|
||||||
voice?: Prisma.SortOrder
|
voice?: Prisma.SortOrder
|
||||||
nya?: Prisma.SortOrder
|
nya?: Prisma.SortOrder
|
||||||
canTypecast?: Prisma.SortOrder
|
canTypecast?: Prisma.SortOrder
|
||||||
|
userSupertonicStyle?: Prisma.SortOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileWhereUniqueInput = Prisma.AtLeast<{
|
export type DiscordUserProfileWhereUniqueInput = Prisma.AtLeast<{
|
||||||
|
|
@ -201,6 +210,7 @@ export type DiscordUserProfileWhereUniqueInput = Prisma.AtLeast<{
|
||||||
voice?: Prisma.EnumVoiceFilter<"DiscordUserProfile"> | $Enums.Voice
|
voice?: Prisma.EnumVoiceFilter<"DiscordUserProfile"> | $Enums.Voice
|
||||||
nya?: Prisma.BoolFilter<"DiscordUserProfile"> | boolean
|
nya?: Prisma.BoolFilter<"DiscordUserProfile"> | boolean
|
||||||
canTypecast?: Prisma.BoolFilter<"DiscordUserProfile"> | boolean
|
canTypecast?: Prisma.BoolFilter<"DiscordUserProfile"> | boolean
|
||||||
|
userSupertonicStyle?: Prisma.StringFilter<"DiscordUserProfile"> | string
|
||||||
}, "id" | "userId">
|
}, "id" | "userId">
|
||||||
|
|
||||||
export type DiscordUserProfileOrderByWithAggregationInput = {
|
export type DiscordUserProfileOrderByWithAggregationInput = {
|
||||||
|
|
@ -209,6 +219,7 @@ export type DiscordUserProfileOrderByWithAggregationInput = {
|
||||||
voice?: Prisma.SortOrder
|
voice?: Prisma.SortOrder
|
||||||
nya?: Prisma.SortOrder
|
nya?: Prisma.SortOrder
|
||||||
canTypecast?: Prisma.SortOrder
|
canTypecast?: Prisma.SortOrder
|
||||||
|
userSupertonicStyle?: Prisma.SortOrder
|
||||||
_count?: Prisma.DiscordUserProfileCountOrderByAggregateInput
|
_count?: Prisma.DiscordUserProfileCountOrderByAggregateInput
|
||||||
_max?: Prisma.DiscordUserProfileMaxOrderByAggregateInput
|
_max?: Prisma.DiscordUserProfileMaxOrderByAggregateInput
|
||||||
_min?: Prisma.DiscordUserProfileMinOrderByAggregateInput
|
_min?: Prisma.DiscordUserProfileMinOrderByAggregateInput
|
||||||
|
|
@ -223,6 +234,7 @@ export type DiscordUserProfileScalarWhereWithAggregatesInput = {
|
||||||
voice?: Prisma.EnumVoiceWithAggregatesFilter<"DiscordUserProfile"> | $Enums.Voice
|
voice?: Prisma.EnumVoiceWithAggregatesFilter<"DiscordUserProfile"> | $Enums.Voice
|
||||||
nya?: Prisma.BoolWithAggregatesFilter<"DiscordUserProfile"> | boolean
|
nya?: Prisma.BoolWithAggregatesFilter<"DiscordUserProfile"> | boolean
|
||||||
canTypecast?: Prisma.BoolWithAggregatesFilter<"DiscordUserProfile"> | boolean
|
canTypecast?: Prisma.BoolWithAggregatesFilter<"DiscordUserProfile"> | boolean
|
||||||
|
userSupertonicStyle?: Prisma.StringWithAggregatesFilter<"DiscordUserProfile"> | string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileCreateInput = {
|
export type DiscordUserProfileCreateInput = {
|
||||||
|
|
@ -231,6 +243,7 @@ export type DiscordUserProfileCreateInput = {
|
||||||
voice?: $Enums.Voice
|
voice?: $Enums.Voice
|
||||||
nya?: boolean
|
nya?: boolean
|
||||||
canTypecast?: boolean
|
canTypecast?: boolean
|
||||||
|
userSupertonicStyle?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileUncheckedCreateInput = {
|
export type DiscordUserProfileUncheckedCreateInput = {
|
||||||
|
|
@ -239,6 +252,7 @@ export type DiscordUserProfileUncheckedCreateInput = {
|
||||||
voice?: $Enums.Voice
|
voice?: $Enums.Voice
|
||||||
nya?: boolean
|
nya?: boolean
|
||||||
canTypecast?: boolean
|
canTypecast?: boolean
|
||||||
|
userSupertonicStyle?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileUpdateInput = {
|
export type DiscordUserProfileUpdateInput = {
|
||||||
|
|
@ -247,6 +261,7 @@ export type DiscordUserProfileUpdateInput = {
|
||||||
voice?: Prisma.EnumVoiceFieldUpdateOperationsInput | $Enums.Voice
|
voice?: Prisma.EnumVoiceFieldUpdateOperationsInput | $Enums.Voice
|
||||||
nya?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
nya?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
canTypecast?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
canTypecast?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
|
userSupertonicStyle?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileUncheckedUpdateInput = {
|
export type DiscordUserProfileUncheckedUpdateInput = {
|
||||||
|
|
@ -255,6 +270,7 @@ export type DiscordUserProfileUncheckedUpdateInput = {
|
||||||
voice?: Prisma.EnumVoiceFieldUpdateOperationsInput | $Enums.Voice
|
voice?: Prisma.EnumVoiceFieldUpdateOperationsInput | $Enums.Voice
|
||||||
nya?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
nya?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
canTypecast?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
canTypecast?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
|
userSupertonicStyle?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileCreateManyInput = {
|
export type DiscordUserProfileCreateManyInput = {
|
||||||
|
|
@ -263,6 +279,7 @@ export type DiscordUserProfileCreateManyInput = {
|
||||||
voice?: $Enums.Voice
|
voice?: $Enums.Voice
|
||||||
nya?: boolean
|
nya?: boolean
|
||||||
canTypecast?: boolean
|
canTypecast?: boolean
|
||||||
|
userSupertonicStyle?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileUpdateManyMutationInput = {
|
export type DiscordUserProfileUpdateManyMutationInput = {
|
||||||
|
|
@ -271,6 +288,7 @@ export type DiscordUserProfileUpdateManyMutationInput = {
|
||||||
voice?: Prisma.EnumVoiceFieldUpdateOperationsInput | $Enums.Voice
|
voice?: Prisma.EnumVoiceFieldUpdateOperationsInput | $Enums.Voice
|
||||||
nya?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
nya?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
canTypecast?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
canTypecast?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
|
userSupertonicStyle?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileUncheckedUpdateManyInput = {
|
export type DiscordUserProfileUncheckedUpdateManyInput = {
|
||||||
|
|
@ -279,6 +297,7 @@ export type DiscordUserProfileUncheckedUpdateManyInput = {
|
||||||
voice?: Prisma.EnumVoiceFieldUpdateOperationsInput | $Enums.Voice
|
voice?: Prisma.EnumVoiceFieldUpdateOperationsInput | $Enums.Voice
|
||||||
nya?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
nya?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
canTypecast?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
canTypecast?: Prisma.BoolFieldUpdateOperationsInput | boolean
|
||||||
|
userSupertonicStyle?: Prisma.StringFieldUpdateOperationsInput | string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileCountOrderByAggregateInput = {
|
export type DiscordUserProfileCountOrderByAggregateInput = {
|
||||||
|
|
@ -287,6 +306,7 @@ export type DiscordUserProfileCountOrderByAggregateInput = {
|
||||||
voice?: Prisma.SortOrder
|
voice?: Prisma.SortOrder
|
||||||
nya?: Prisma.SortOrder
|
nya?: Prisma.SortOrder
|
||||||
canTypecast?: Prisma.SortOrder
|
canTypecast?: Prisma.SortOrder
|
||||||
|
userSupertonicStyle?: Prisma.SortOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileMaxOrderByAggregateInput = {
|
export type DiscordUserProfileMaxOrderByAggregateInput = {
|
||||||
|
|
@ -295,6 +315,7 @@ export type DiscordUserProfileMaxOrderByAggregateInput = {
|
||||||
voice?: Prisma.SortOrder
|
voice?: Prisma.SortOrder
|
||||||
nya?: Prisma.SortOrder
|
nya?: Prisma.SortOrder
|
||||||
canTypecast?: Prisma.SortOrder
|
canTypecast?: Prisma.SortOrder
|
||||||
|
userSupertonicStyle?: Prisma.SortOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileMinOrderByAggregateInput = {
|
export type DiscordUserProfileMinOrderByAggregateInput = {
|
||||||
|
|
@ -303,6 +324,7 @@ export type DiscordUserProfileMinOrderByAggregateInput = {
|
||||||
voice?: Prisma.SortOrder
|
voice?: Prisma.SortOrder
|
||||||
nya?: Prisma.SortOrder
|
nya?: Prisma.SortOrder
|
||||||
canTypecast?: Prisma.SortOrder
|
canTypecast?: Prisma.SortOrder
|
||||||
|
userSupertonicStyle?: Prisma.SortOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
export type StringFieldUpdateOperationsInput = {
|
export type StringFieldUpdateOperationsInput = {
|
||||||
|
|
@ -325,6 +347,7 @@ export type DiscordUserProfileSelect<ExtArgs extends runtime.Types.Extensions.In
|
||||||
voice?: boolean
|
voice?: boolean
|
||||||
nya?: boolean
|
nya?: boolean
|
||||||
canTypecast?: boolean
|
canTypecast?: boolean
|
||||||
|
userSupertonicStyle?: boolean
|
||||||
}, ExtArgs["result"]["discordUserProfile"]>
|
}, ExtArgs["result"]["discordUserProfile"]>
|
||||||
|
|
||||||
export type DiscordUserProfileSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
|
export type DiscordUserProfileSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
|
||||||
|
|
@ -333,6 +356,7 @@ export type DiscordUserProfileSelectCreateManyAndReturn<ExtArgs extends runtime.
|
||||||
voice?: boolean
|
voice?: boolean
|
||||||
nya?: boolean
|
nya?: boolean
|
||||||
canTypecast?: boolean
|
canTypecast?: boolean
|
||||||
|
userSupertonicStyle?: boolean
|
||||||
}, ExtArgs["result"]["discordUserProfile"]>
|
}, ExtArgs["result"]["discordUserProfile"]>
|
||||||
|
|
||||||
export type DiscordUserProfileSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
|
export type DiscordUserProfileSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
|
||||||
|
|
@ -341,6 +365,7 @@ export type DiscordUserProfileSelectUpdateManyAndReturn<ExtArgs extends runtime.
|
||||||
voice?: boolean
|
voice?: boolean
|
||||||
nya?: boolean
|
nya?: boolean
|
||||||
canTypecast?: boolean
|
canTypecast?: boolean
|
||||||
|
userSupertonicStyle?: boolean
|
||||||
}, ExtArgs["result"]["discordUserProfile"]>
|
}, ExtArgs["result"]["discordUserProfile"]>
|
||||||
|
|
||||||
export type DiscordUserProfileSelectScalar = {
|
export type DiscordUserProfileSelectScalar = {
|
||||||
|
|
@ -349,9 +374,10 @@ export type DiscordUserProfileSelectScalar = {
|
||||||
voice?: boolean
|
voice?: boolean
|
||||||
nya?: boolean
|
nya?: boolean
|
||||||
canTypecast?: boolean
|
canTypecast?: boolean
|
||||||
|
userSupertonicStyle?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DiscordUserProfileOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "userId" | "voice" | "nya" | "canTypecast", ExtArgs["result"]["discordUserProfile"]>
|
export type DiscordUserProfileOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "userId" | "voice" | "nya" | "canTypecast" | "userSupertonicStyle", ExtArgs["result"]["discordUserProfile"]>
|
||||||
|
|
||||||
export type $DiscordUserProfilePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
|
export type $DiscordUserProfilePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
|
||||||
name: "DiscordUserProfile"
|
name: "DiscordUserProfile"
|
||||||
|
|
@ -362,6 +388,7 @@ export type $DiscordUserProfilePayload<ExtArgs extends runtime.Types.Extensions.
|
||||||
voice: $Enums.Voice
|
voice: $Enums.Voice
|
||||||
nya: boolean
|
nya: boolean
|
||||||
canTypecast: boolean
|
canTypecast: boolean
|
||||||
|
userSupertonicStyle: string
|
||||||
}, ExtArgs["result"]["discordUserProfile"]>
|
}, ExtArgs["result"]["discordUserProfile"]>
|
||||||
composites: {}
|
composites: {}
|
||||||
}
|
}
|
||||||
|
|
@ -790,6 +817,7 @@ export interface DiscordUserProfileFieldRefs {
|
||||||
readonly voice: Prisma.FieldRef<"DiscordUserProfile", 'Voice'>
|
readonly voice: Prisma.FieldRef<"DiscordUserProfile", 'Voice'>
|
||||||
readonly nya: Prisma.FieldRef<"DiscordUserProfile", 'Boolean'>
|
readonly nya: Prisma.FieldRef<"DiscordUserProfile", 'Boolean'>
|
||||||
readonly canTypecast: Prisma.FieldRef<"DiscordUserProfile", 'Boolean'>
|
readonly canTypecast: Prisma.FieldRef<"DiscordUserProfile", 'Boolean'>
|
||||||
|
readonly userSupertonicStyle: Prisma.FieldRef<"DiscordUserProfile", 'String'>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,13 @@ export const APPLICATION_ID = process.env.APPLICATION_ID as string;
|
||||||
export const GUILD_ID = process.env.GUILD_ID as string;
|
export const GUILD_ID = process.env.GUILD_ID as string;
|
||||||
export const TYPECAST_TOKENS = (process.env.TYPECAST_TOKEN as string).split(",");
|
export const TYPECAST_TOKENS = (process.env.TYPECAST_TOKEN as string).split(",");
|
||||||
export const DATABASE_URL = process.env.DATABASE_URL as string;
|
export const DATABASE_URL = process.env.DATABASE_URL as string;
|
||||||
|
export const SUPERTONIC_DEFAULT_VOICE = (process.env.SUPERTONIC_DEFAULT_VOICE as string | undefined) ?? "Q1";
|
||||||
|
export const SUPERTONIC_STYLE_LIST: { name: string, value: string }[] = (()=>{
|
||||||
|
const defaultValue = [
|
||||||
|
{ name: "여성1", value: "F1" },
|
||||||
|
];
|
||||||
|
try {
|
||||||
|
return JSON.parse(process.env.SUPERTONIC_STYLE_LIST ?? "null") as any ?? defaultValue
|
||||||
|
} catch {}
|
||||||
|
return defaultValue;
|
||||||
|
})();
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "DiscordUserProfile" ADD COLUMN "userSupertonicStyle" TEXT NOT NULL DEFAULT '';
|
||||||
|
|
@ -14,6 +14,7 @@ model DiscordUserProfile {
|
||||||
voice Voice @default(Papago)
|
voice Voice @default(Papago)
|
||||||
nya Boolean @default(false)
|
nya Boolean @default(false)
|
||||||
canTypecast Boolean @default(false)
|
canTypecast Boolean @default(false)
|
||||||
|
userSupertonicStyle String @default("")
|
||||||
}
|
}
|
||||||
|
|
||||||
model DiscordGuildProfile {
|
model DiscordGuildProfile {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue