add disallow_opt_out configuration option
This commit is contained in:
parent
603d922a33
commit
6d5b91d07f
4 changed files with 36 additions and 17 deletions
|
@ -30,6 +30,7 @@ function getDBUrl() {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function databaseMigrations() {
|
async function databaseMigrations() {
|
||||||
|
// prettier-ignore
|
||||||
async function setIndexes(collection: ICollection, toIndex: string[]) {
|
async function setIndexes(collection: ICollection, toIndex: string[]) {
|
||||||
try {
|
try {
|
||||||
const indexes = await collection.indexes();
|
const indexes = await collection.indexes();
|
||||||
|
@ -44,21 +45,32 @@ async function databaseMigrations() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await setIndexes(dbs.BRIDGE_CONFIG, [ 'discord', 'revolt' ]);
|
await setIndexes(dbs.BRIDGE_CONFIG, ["discord", "revolt"]);
|
||||||
await setIndexes(dbs.BRIDGE_REQUESTS, [ 'id', 'revolt' ]);
|
await setIndexes(dbs.BRIDGE_REQUESTS, ["id", "revolt"]);
|
||||||
await setIndexes(dbs.BRIDGED_MESSAGES, [
|
await setIndexes(dbs.BRIDGED_MESSAGES, [
|
||||||
"discord.messageId",
|
"discord.messageId",
|
||||||
"revolt.messageId",
|
"revolt.messageId",
|
||||||
"revolt.nonce",
|
"revolt.nonce",
|
||||||
"origin",
|
"origin",
|
||||||
]);
|
]);
|
||||||
await setIndexes(dbs.INFRACTIONS, [ 'createdBy', 'user', 'server' ]);
|
await setIndexes(dbs.INFRACTIONS, ["createdBy", "user", "server"]);
|
||||||
await setIndexes(dbs.PENDING_LOGINS, [ 'code', 'user' ]);
|
await setIndexes(dbs.PENDING_LOGINS, ["code", "user"]);
|
||||||
await setIndexes(dbs.SERVERS, [ 'id' ]);
|
await setIndexes(dbs.SERVERS, ["id"]);
|
||||||
await setIndexes(dbs.SESSIONS, [ 'user', 'token' ]);
|
await setIndexes(dbs.SESSIONS, ["user", "token"]);
|
||||||
await setIndexes(dbs.TEMPBANS, [ 'id', 'until' ]);
|
await setIndexes(dbs.TEMPBANS, ["id", "until"]);
|
||||||
await setIndexes(dbs.USERS, [ 'id' ]);
|
await setIndexes(dbs.USERS, ["id"]);
|
||||||
await setIndexes(dbs.VOTEKICKS, [ 'id', 'server', 'target' ]);
|
await setIndexes(dbs.VOTEKICKS, ["id", "server", "target"]);
|
||||||
|
|
||||||
|
// Migrate `disallowIfOptedOut` to `config.disallow_opt_out` on bridge_config
|
||||||
|
await dbs.BRIDGE_CONFIG.update(
|
||||||
|
{
|
||||||
|
disallowIfOptedOut: { $exists: true },
|
||||||
|
"config.disallow_opt_out": { $exists: false },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$rename: { disallowIfOptedOut: "config.disallow_opt_out" },
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export { databaseMigrations }
|
export { databaseMigrations }
|
||||||
|
|
|
@ -101,7 +101,11 @@ client.on('messageCreate', async message => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bridgeCfg.disallowIfOptedOut && userConfig?.optOut && message.deletable) {
|
if (
|
||||||
|
bridgeCfg.config?.disallow_opt_out &&
|
||||||
|
userConfig?.optOut &&
|
||||||
|
message.deletable
|
||||||
|
) {
|
||||||
await message.delete();
|
await message.delete();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,10 +4,10 @@ export const CONFIG_KEYS = {
|
||||||
description:
|
description:
|
||||||
"If enabled, nicknames and avatar overrides will be bridged.",
|
"If enabled, nicknames and avatar overrides will be bridged.",
|
||||||
},
|
},
|
||||||
// disallow_opt_out: {
|
disallow_opt_out: {
|
||||||
// friendlyName: "Disallow users who opted out of message bridging",
|
friendlyName: "Disallow users who opted out of message bridging",
|
||||||
// description:
|
description:
|
||||||
// "If enabled, all messages by users who opted out of their messages being bridged (`/bridge opt_out`) will be deleted. " +
|
"If enabled, all messages by users who opted out of their messages being bridged (`/bridge opt_out`) will be deleted. " +
|
||||||
// "You should enable this if your Revolt server is bridged to a mostly unmoderated Discord server.",
|
"You should enable this if your Revolt server is bridged to a mostly unmoderated Discord server.",
|
||||||
// },
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,6 +15,9 @@ export default class {
|
||||||
|
|
||||||
config?: { [key in keyof typeof CONFIG_KEYS]: boolean | undefined };
|
config?: { [key in keyof typeof CONFIG_KEYS]: boolean | undefined };
|
||||||
|
|
||||||
// If true, messages by users who have opted out of bridging will be deleted.
|
/**
|
||||||
|
* @deprecated Use config.disallow_opt_out
|
||||||
|
* Will be automatically removed by database migrations
|
||||||
|
*/
|
||||||
disallowIfOptedOut?: boolean;
|
disallowIfOptedOut?: boolean;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue