mirror of
https://github.com/nx-bat/discordbot-ng.git
synced 2026-11-11 07:13:37 -05:00
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
56f528c0c3 | ||
|
|
a2af916ddc | ||
|
|
22da1c5a80 |
Generated
-108
@@ -9,10 +9,8 @@
|
|||||||
"@redis/client": "5.1.0",
|
"@redis/client": "5.1.0",
|
||||||
"body-parser": "2.3.0",
|
"body-parser": "2.3.0",
|
||||||
"discord.js": "14.27.0",
|
"discord.js": "14.27.0",
|
||||||
"dotenv": "16.5.0",
|
|
||||||
"express": "5.1.0",
|
"express": "5.1.0",
|
||||||
"express-session": "1.19.0",
|
"express-session": "1.19.0",
|
||||||
"markdown-it": "15.0.0",
|
|
||||||
"memorystore": "1.6.7",
|
"memorystore": "1.6.7",
|
||||||
"sqlite": "5.1.1",
|
"sqlite": "5.1.1",
|
||||||
"sqlite3": "6.0.1"
|
"sqlite3": "6.0.1"
|
||||||
@@ -1894,17 +1892,6 @@
|
|||||||
"url": "https://github.com/discordjs/discord.js?sponsor"
|
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/dotenv": {
|
|
||||||
"version": "16.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
|
|
||||||
"integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://dotenvx.com"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/dunder-proto": {
|
"node_modules/dunder-proto": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
||||||
@@ -1951,18 +1938,6 @@
|
|||||||
"once": "^1.4.0"
|
"once": "^1.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/entities": {
|
|
||||||
"version": "8.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz",
|
|
||||||
"integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==",
|
|
||||||
"license": "BSD-2-Clause",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=20.19.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/env-paths": {
|
"node_modules/env-paths": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
|
||||||
@@ -2919,25 +2894,6 @@
|
|||||||
"node": ">= 0.8.0"
|
"node": ">= 0.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/linkify-it": {
|
|
||||||
"version": "6.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-6.1.0.tgz",
|
|
||||||
"integrity": "sha512-wJ/TwpSDTLepCrQoYWYIExIKg5Zchex2Nn5yk2mFnB+6PtdkHtyLx742md9csRjjOnGkKIS/RrbY7l8D6gT9Vw==",
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/puzrin"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/markdown-it"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"uc.micro": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/locate-path": {
|
"node_modules/locate-path": {
|
||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
||||||
@@ -2976,49 +2932,6 @@
|
|||||||
"integrity": "sha512-afO2mnxW7GDTXMm5/AoN1WuOcdoKhtgXjIvHmobqTD1grNplhGdv3PFOyjCVmrnOZBIT/gD/koDKpYG+0mvHcg==",
|
"integrity": "sha512-afO2mnxW7GDTXMm5/AoN1WuOcdoKhtgXjIvHmobqTD1grNplhGdv3PFOyjCVmrnOZBIT/gD/koDKpYG+0mvHcg==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/markdown-it": {
|
|
||||||
"version": "15.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-15.0.0.tgz",
|
|
||||||
"integrity": "sha512-Lf8ajvVNdRpzSNB4VegxNy7gjs8gU35l4b4+ET49LrQC5PKYwLZ72u60LeJ9gv3qiaesuYjJWCyVeQmv/QWKQw==",
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/puzrin"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/markdown-it"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"argparse": "^3.0.0",
|
|
||||||
"entities": "^8.0.0",
|
|
||||||
"linkify-it": "^6.0.0",
|
|
||||||
"mdurl": "^2.1.0",
|
|
||||||
"punycode.js": "^2.3.1",
|
|
||||||
"uc.micro": "^3.0.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"markdown-it": "bin/markdown-it.mjs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/markdown-it/node_modules/argparse": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-BOp5NMrHqKxmq/OLr+clzzrRxgOKSLkcjmkWuChp7Irqwn4s74WjOBPIgWfA/HMcBnVkZ5XEuf9uUqzlpfCQ6A==",
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/puzrin"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/nodeca"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"license": "Python-2.0"
|
|
||||||
},
|
|
||||||
"node_modules/math-intrinsics": {
|
"node_modules/math-intrinsics": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
||||||
@@ -3027,12 +2940,6 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/mdurl": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/media-typer": {
|
"node_modules/media-typer": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
|
||||||
@@ -3591,15 +3498,6 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/punycode.js": {
|
|
||||||
"version": "2.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
|
|
||||||
"integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/qs": {
|
"node_modules/qs": {
|
||||||
"version": "6.15.2",
|
"version": "6.15.2",
|
||||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz",
|
||||||
@@ -4568,12 +4466,6 @@
|
|||||||
"typescript": ">=4.8.4 <5.9.0"
|
"typescript": ">=4.8.4 <5.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/uc.micro": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-U3PppEkleoTnIfi8BozMx3yju3qc/L6SwqWo2Sw+54PX+PX0q9I+r1Um5HCmqD7n9VDX5/v3vQH/AjA6deDdtw==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/uid-safe": {
|
"node_modules/uid-safe": {
|
||||||
"version": "2.1.5",
|
"version": "2.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
|
||||||
|
|||||||
+4
-6
@@ -18,23 +18,21 @@
|
|||||||
"@redis/client": "5.1.0",
|
"@redis/client": "5.1.0",
|
||||||
"body-parser": "2.3.0",
|
"body-parser": "2.3.0",
|
||||||
"discord.js": "14.27.0",
|
"discord.js": "14.27.0",
|
||||||
"dotenv": "16.5.0",
|
|
||||||
"express": "5.1.0",
|
"express": "5.1.0",
|
||||||
"express-session": "1.19.0",
|
"express-session": "1.19.0",
|
||||||
"markdown-it": "15.0.0",
|
|
||||||
"memorystore": "1.6.7",
|
"memorystore": "1.6.7",
|
||||||
"sqlite": "5.1.1",
|
"sqlite": "5.1.1",
|
||||||
"sqlite3": "6.0.1"
|
"sqlite3": "6.0.1"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "tsx watch --enable-source-maps src/index.ts",
|
"dev": "tsx watch --enable-source-maps --env-file=.env src/index.ts",
|
||||||
"start": "node dist/index.js",
|
"start": "node --env-file=.env dist/index.js",
|
||||||
"lint": "npx eslint .",
|
"lint": "npx eslint .",
|
||||||
"typecheck": "npx tsc --noEmit",
|
"typecheck": "npx tsc --noEmit",
|
||||||
"build": "npm run clean && node scripts/build.js && npm run copyfiles",
|
"build": "npm run clean && node scripts/build.js && npm run copyfiles",
|
||||||
"clean": "rimraf dist",
|
"clean": "rimraf dist",
|
||||||
"copyfiles": "copyfiles -u 1 \"./src/**/*.html\" ./dist",
|
"copyfiles": "copyfiles -u 1 \"./src/**/*.html\" ./dist",
|
||||||
"encrypt": "node ./scripts/encrypt-data.js",
|
"encrypt": "node --env-file=.env ./scripts/encrypt-data.js",
|
||||||
"add-author-hash": "node ./scripts/add-author-id-hash.js"
|
"add-author-hash": "node --env-file=.env ./scripts/add-author-id-hash.js"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
import crypto from 'crypto';
|
import crypto from 'crypto';
|
||||||
import dotenv from 'dotenv';
|
|
||||||
import { open } from 'sqlite';
|
import { open } from 'sqlite';
|
||||||
import sqlite3 from 'sqlite3';
|
import sqlite3 from 'sqlite3';
|
||||||
|
|
||||||
dotenv.config();
|
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
Encrypter.initialize(process.env.DATABASE_SECRET);
|
Encrypter.initialize(process.env.DATABASE_SECRET);
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
import crypto from 'crypto';
|
import crypto from 'crypto';
|
||||||
import dotenv from 'dotenv';
|
|
||||||
import { open } from 'sqlite';
|
import { open } from 'sqlite';
|
||||||
import sqlite3 from 'sqlite3';
|
import sqlite3 from 'sqlite3';
|
||||||
|
|
||||||
dotenv.config();
|
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
Encrypter.initialize(process.env.DATABASE_SECRET);
|
Encrypter.initialize(process.env.DATABASE_SECRET);
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
import dotenv from 'dotenv';
|
|
||||||
|
|
||||||
dotenv.config();
|
|
||||||
|
|
||||||
const { DISCORD_TOKEN, DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET, DISCORD_GUILD_ID, RELEASE_SECRET, DATABASE_SECRET, LINK_SECRET, E621_BASE_URL, E926_BASE_URL, PRIVACY_POLICY_URL, GIT_REPO_BASE_URL, REDIS_URL, PORT, DEBUG } = process.env;
|
const { DISCORD_TOKEN, DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET, DISCORD_GUILD_ID, RELEASE_SECRET, DATABASE_SECRET, LINK_SECRET, E621_BASE_URL, E926_BASE_URL, PRIVACY_POLICY_URL, GIT_REPO_BASE_URL, REDIS_URL, PORT, DEBUG } = process.env;
|
||||||
|
|
||||||
export const config = {
|
export const config = {
|
||||||
|
|||||||
+10
-4
@@ -1,13 +1,13 @@
|
|||||||
import { Client as DiscordClient, GatewayIntentBits, MessageFlags, Partials } from 'discord.js';
|
import { Client as DiscordClient, GatewayIntentBits, MessageFlags, Partials } from 'discord.js';
|
||||||
import { config } from './config';
|
import { config } from './config';
|
||||||
import events from './events';
|
import events from './events';
|
||||||
import { ScheduledTasks, Scheduler } from './scheduler';
|
|
||||||
import { Database } from './shared/Database';
|
import { Database } from './shared/Database';
|
||||||
import { openRedisClient } from './shared/RedisClient';
|
import { openRedisClient } from './shared/RedisClient';
|
||||||
import { Handler } from './types';
|
import { Handler } from './types';
|
||||||
import { initIfNecessary, loadHandlersFrom, refreshCommands } from './utils';
|
import { initIfNecessary, loadHandlersFrom, refreshCommands } from './utils';
|
||||||
import { initializeWebserver } from './webserver';
|
import { initializeWebserver } from './webserver';
|
||||||
import { Encrypter } from './shared/Encrypter';
|
import { Encrypter } from './shared/Encrypter';
|
||||||
|
import tasks from './tasks';
|
||||||
|
|
||||||
|
|
||||||
let ready = false;
|
let ready = false;
|
||||||
@@ -31,8 +31,6 @@ const client = new DiscordClient({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const scheduler: Scheduler = new Scheduler(client);
|
|
||||||
|
|
||||||
const commands: Handler[] = [];
|
const commands: Handler[] = [];
|
||||||
const contextMenus: Handler[] = [];
|
const contextMenus: Handler[] = [];
|
||||||
const buttons: Handler[] = [];
|
const buttons: Handler[] = [];
|
||||||
@@ -141,7 +139,15 @@ client.on('clientReady', async () => {
|
|||||||
|
|
||||||
await initializeWebserver(client);
|
await initializeWebserver(client);
|
||||||
|
|
||||||
ScheduledTasks.forEach(task => scheduler.add(task));
|
tasks.forEach((task) => {
|
||||||
|
const handler = () => {
|
||||||
|
Promise.resolve(task.handle(client))
|
||||||
|
.catch(e => console.error(`Error in '${task.id}' task:`, e));
|
||||||
|
};
|
||||||
|
|
||||||
|
if (task.firstRun) handler();
|
||||||
|
setInterval(handler, task.interval);
|
||||||
|
});
|
||||||
|
|
||||||
events.forEach(event =>
|
events.forEach(event =>
|
||||||
client.on(event.event, (...args) =>
|
client.on(event.event, (...args) =>
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
import { Client } from 'discord.js';
|
|
||||||
import { Task } from '../types';
|
|
||||||
import ScheduledTasks from './tasks';
|
|
||||||
|
|
||||||
class Scheduler {
|
|
||||||
private tasks = new Map<Task, NodeJS.Timeout>();
|
|
||||||
private context: Client;
|
|
||||||
|
|
||||||
constructor(context: Client) {
|
|
||||||
this.context = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
add(task: Task) {
|
|
||||||
const interval = setInterval(() => task.handle(this.context), task.interval);
|
|
||||||
if (task.firstRun) interval._onTimeout();
|
|
||||||
|
|
||||||
this.tasks.set(task, interval);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export {
|
|
||||||
ScheduledTasks, Scheduler
|
|
||||||
};
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import { Client } from 'discord.js';
|
|
||||||
import { Task } from '../../types';
|
|
||||||
import { checkExpiredBans } from '../../utils';
|
|
||||||
|
|
||||||
class CheckExpiredBansTask implements Task {
|
|
||||||
interval: number = 300000;
|
|
||||||
firstRun: boolean = true;
|
|
||||||
|
|
||||||
async handle(context: Client): Promise<void> {
|
|
||||||
await checkExpiredBans(context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default new CheckExpiredBansTask();
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import { Client } from 'discord.js';
|
|
||||||
import { Task } from '../../types';
|
|
||||||
import { closeOldTickets } from '../../utils';
|
|
||||||
|
|
||||||
class CloseStaleTicketsTask implements Task {
|
|
||||||
interval: number = 3.6e6;
|
|
||||||
firstRun: boolean = true;
|
|
||||||
|
|
||||||
async handle(context: Client): Promise<void> {
|
|
||||||
await closeOldTickets(context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default new CloseStaleTicketsTask();
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
import checkExpiredBansTask from './check-expired-bans-task';
|
|
||||||
import closeStaleTicketsTask from './close-stale-tickets-task';
|
|
||||||
import pruneOldMessagesTask from './prune-old-messages-task';
|
|
||||||
|
|
||||||
export default [
|
|
||||||
closeStaleTicketsTask,
|
|
||||||
checkExpiredBansTask,
|
|
||||||
pruneOldMessagesTask
|
|
||||||
];
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
import { Task } from '../../types';
|
|
||||||
import { Database } from '../../shared/Database';
|
|
||||||
|
|
||||||
class PruneOldMessagesTask implements Task {
|
|
||||||
interval: number = 3.6e6;
|
|
||||||
firstRun: boolean = true;
|
|
||||||
|
|
||||||
async handle(): Promise<void> {
|
|
||||||
await Database.pruneOldMessages();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default new PruneOldMessagesTask();
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import { Client } from 'discord.js';
|
||||||
|
import { Task } from '../types';
|
||||||
|
import { checkExpiredBans } from '../utils';
|
||||||
|
|
||||||
|
const task: Task = {
|
||||||
|
id: 'checkExpiredBans',
|
||||||
|
interval: 300000,
|
||||||
|
firstRun: true,
|
||||||
|
|
||||||
|
handle: async (context: Client) => {
|
||||||
|
await checkExpiredBans(context);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default task;
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import { Client } from 'discord.js';
|
||||||
|
import { Task } from '../types';
|
||||||
|
import { closeOldTickets } from '../utils';
|
||||||
|
|
||||||
|
const task: Task = {
|
||||||
|
id: 'closeStaleTickets',
|
||||||
|
interval: 3.6e6,
|
||||||
|
firstRun: true,
|
||||||
|
|
||||||
|
handle: async (context: Client) => {
|
||||||
|
await closeOldTickets(context);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default task;
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import checkExpiredBansTask from './checkExpiredBansTask';
|
||||||
|
import closeStaleTicketsTask from './closeStaleTicketsTask';
|
||||||
|
import pruneOldMessagesTask from './pruneOldMessagesTask';
|
||||||
|
|
||||||
|
export default [
|
||||||
|
closeStaleTicketsTask,
|
||||||
|
checkExpiredBansTask,
|
||||||
|
pruneOldMessagesTask
|
||||||
|
];
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import { Client } from 'discord.js';
|
||||||
|
import { Database } from '../shared/Database';
|
||||||
|
import { Task } from '../types';
|
||||||
|
|
||||||
|
const task: Task = {
|
||||||
|
id: 'pruneOldMessages',
|
||||||
|
interval: 3.6e6,
|
||||||
|
firstRun: true,
|
||||||
|
|
||||||
|
handle: async (context: Client) => {
|
||||||
|
await Database.pruneOldMessages();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default task;
|
||||||
Vendored
+1
-1
@@ -3,4 +3,4 @@ export * from './database-types.d';
|
|||||||
export * from './e621-types.d';
|
export * from './e621-types.d';
|
||||||
export * from './handler.d';
|
export * from './handler.d';
|
||||||
export * from './helper-types.d';
|
export * from './helper-types.d';
|
||||||
export * from './scheduler.d';
|
export * from './task.d';
|
||||||
|
|||||||
+2
-1
@@ -1,8 +1,9 @@
|
|||||||
import { Client } from 'discord.js';
|
import { Client } from 'discord.js';
|
||||||
|
|
||||||
export interface Task {
|
export interface Task {
|
||||||
|
id: string;
|
||||||
interval: number;
|
interval: number;
|
||||||
firstRun: boolean;
|
firstRun: boolean;
|
||||||
|
|
||||||
handle(context: Client): Promise<void>;
|
handle(context: Client): Promise<void>;
|
||||||
};
|
}
|
||||||
Reference in New Issue
Block a user