Enhance component message handling and introduce new features
- Added `ComponentMessageBinding` model to manage message components in the database. - Updated `WelcomeConfig`, `Tag`, and `ScheduledMessage` models to support new component fields. - Integrated component handling in various modules, including Scheduler and Tags, to improve message customization. - Enhanced user experience by implementing new commands for creating and managing component messages in the utility module. - Updated localization files to reflect new component-related features and improve user guidance.
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "WelcomeConfig" ADD COLUMN IF NOT EXISTS "welcomeComponents" JSONB;
|
||||
ALTER TABLE "WelcomeConfig" ADD COLUMN IF NOT EXISTS "leaveType" TEXT NOT NULL DEFAULT 'TEXT';
|
||||
ALTER TABLE "WelcomeConfig" ADD COLUMN IF NOT EXISTS "leaveComponents" JSONB;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "Tag" ADD COLUMN IF NOT EXISTS "components" JSONB;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "ScheduledMessage" ADD COLUMN IF NOT EXISTS "components" JSONB;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE IF NOT EXISTS "ComponentMessageBinding" (
|
||||
"id" TEXT NOT NULL,
|
||||
"guildId" TEXT NOT NULL,
|
||||
"channelId" TEXT NOT NULL,
|
||||
"messageId" TEXT,
|
||||
"payload" JSONB NOT NULL,
|
||||
"createdById" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "ComponentMessageBinding_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX IF NOT EXISTS "ComponentMessageBinding_guildId_createdAt_idx" ON "ComponentMessageBinding"("guildId", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX IF NOT EXISTS "ComponentMessageBinding_messageId_idx" ON "ComponentMessageBinding"("messageId");
|
||||
|
||||
-- AddForeignKey
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "ComponentMessageBinding" ADD CONSTRAINT "ComponentMessageBinding_guildId_fkey" FOREIGN KEY ("guildId") REFERENCES "Guild"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION
|
||||
WHEN duplicate_object THEN null;
|
||||
END $$;
|
||||
@@ -51,6 +51,7 @@ model Guild {
|
||||
socialFeeds SocialFeed[]
|
||||
scheduledMessages ScheduledMessage[]
|
||||
guildBackups GuildBackup[]
|
||||
componentMessageBindings ComponentMessageBinding[]
|
||||
dashboardAccessRules DashboardAccessRule[]
|
||||
dashboardAuditLogs DashboardAuditLog[]
|
||||
commandOverrides CommandOverride[]
|
||||
@@ -245,8 +246,11 @@ model WelcomeConfig {
|
||||
welcomeType String @default("TEXT")
|
||||
welcomeContent String?
|
||||
welcomeEmbed Json?
|
||||
welcomeComponents Json?
|
||||
leaveType String @default("TEXT")
|
||||
leaveContent String?
|
||||
leaveEmbed Json?
|
||||
leaveComponents Json?
|
||||
welcomeDmEnabled Boolean @default(false)
|
||||
welcomeDmContent String?
|
||||
userAutoroleIds String[] @default([])
|
||||
@@ -555,6 +559,7 @@ model Tag {
|
||||
name String
|
||||
content String?
|
||||
embed Json?
|
||||
components Json?
|
||||
responseType String @default("TEXT")
|
||||
triggerWord String?
|
||||
allowedRoleIds String[] @default([])
|
||||
@@ -774,6 +779,7 @@ model ScheduledMessage {
|
||||
creatorId String
|
||||
content String?
|
||||
embed Json?
|
||||
components Json?
|
||||
rolePingId String?
|
||||
cron String?
|
||||
runAt DateTime?
|
||||
@@ -786,6 +792,20 @@ model ScheduledMessage {
|
||||
@@index([guildId, enabled])
|
||||
}
|
||||
|
||||
model ComponentMessageBinding {
|
||||
id String @id @default(cuid())
|
||||
guildId String
|
||||
channelId String
|
||||
messageId String?
|
||||
payload Json
|
||||
createdById String
|
||||
createdAt DateTime @default(now())
|
||||
guild Guild @relation(fields: [guildId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([guildId, createdAt])
|
||||
@@index([messageId])
|
||||
}
|
||||
|
||||
model GuildBackup {
|
||||
id String @id @default(cuid())
|
||||
guildId String
|
||||
|
||||
Reference in New Issue
Block a user