Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion config.json
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,8 @@
"lock": "admin",
"unlock": "admin",
"slowmode": "admin",
"modlog": "moderator"
"modlog": "moderator",
"announce": "moderator"
}
}
}
35 changes: 35 additions & 0 deletions migrations/002_scheduled-messages.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* Add scheduled_messages table for /announce command.
* Supports one-time and recurring (cron) scheduled messages.
*
* @see https://github.com/VolvoxLLC/volvox-bot/issues/42
*/

/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
exports.up = (pgm) => {
pgm.sql(`
CREATE TABLE IF NOT EXISTS scheduled_messages (
id SERIAL PRIMARY KEY,
guild_id TEXT NOT NULL,
channel_id TEXT NOT NULL,
content TEXT NOT NULL,
embed_json JSONB,
cron_expression TEXT,
next_run TIMESTAMPTZ NOT NULL,
timezone TEXT NOT NULL DEFAULT 'America/New_York',
author_id TEXT NOT NULL,
enabled BOOLEAN NOT NULL DEFAULT true,
one_time BOOLEAN NOT NULL DEFAULT false,
created_at TIMESTAMPTZ DEFAULT NOW()
)
`);

pgm.sql(
'CREATE INDEX IF NOT EXISTS idx_scheduled_next_run ON scheduled_messages(next_run) WHERE enabled = true',
);
};

/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
exports.down = (pgm) => {
pgm.sql('DROP TABLE IF EXISTS scheduled_messages CASCADE');
};
Loading
Loading