2
0
mirror of https://github.com/thedevs-network/the-guard-bot synced 2025-08-22 09:57:50 +00:00
the-guard-bot/example.config.js

148 lines
3.4 KiB
JavaScript
Raw Normal View History

2020-03-09 23:27:19 +01:00
// @ts-check
'use strict';
2020-03-09 23:27:19 +01:00
/**
* @typedef { import('./typings/config').Config } Config
* @typedef { import('./typings/config').InlineKeyboard } InlineKeyboard
*/
/*
* Create `config.js` by running `cp example.config.js config.js`
* in the project folder, then edit it.
*
* Config file in JSON format (`config.json`) is also supported.
* For backwards compatibility, and because why not, it needs no extra code.
*/
/**
* Millisecond
* String to be parsed by https://npmjs.com/millisecond,
* or number of milliseconds. Pass 0 to remove immediately.
2018-11-28 18:23:57 +01:00
* @typedef {( number | string )} ms
*/
2020-03-09 23:27:19 +01:00
/**
* @type {Config}
*/
const config = {
/**
2019-01-28 15:20:00 +01:00
* @type {!( number | string | (number|string)[] )}
* ID (number) or username (string) of master,
* the person who can promote and demote admins,
* and add the bot to groups.
*/
master: 123456789,
/**
* @type {!string}
* Telegram Bot token obtained from https://t.me/BotFather.
*/
token: '',
2019-01-21 17:22:53 +01:00
chats: {
2019-07-06 10:10:41 -04:00
/**
* @type {(number | false)}
* Chat to send member join/leave notifications to.
* Pass false to disable this feature.
*/
presenceLog: false,
2019-01-21 17:22:53 +01:00
/**
* @type {(number | false)}
* Chat to send report notifications to.
* Pass false to disable this feature.
*/
report: false,
2019-01-21 17:22:53 +01:00
},
/**
* @type {( 'all' | 'own' | 'none' )}
* Which messages with commands should be deleted?
* Defaults to 'own' -- don't delete commands meant for other bots.
*/
deleteCommands: 'own',
deleteCustom: {
2020-03-09 23:27:19 +01:00
longerThan: 450, // UTF-16 characters
after: '20 minutes'
},
/**
2019-02-07 15:54:05 +05:30
* @type {(ms | false)} Millisecond
* Timeout before removing join and leave messages.
* [Look at typedef above for details.]
2018-11-28 18:23:57 +01:00
* Pass false to disable this feature.
*/
deleteJoinsAfter: '2 minutes',
/**
2019-02-07 15:54:05 +05:30
* @type {(ms | { auto: (ms | false), manual: (ms | false) } | false)}
* Timeout before removing auto-warn messages.
* [Look at typedef above for details.]
* Pass an object with { auto, manual } for more granular control
* over which messages get deleted
2018-11-28 18:23:57 +01:00
* Pass false to disable this feature.
*/
deleteWarnsAfter: false,
/**
2019-02-07 15:54:05 +05:30
* @type {(ms | false)}
* Timeout before removing ban messages.
* [Look at typedef above for details.]
2018-11-28 18:23:57 +01:00
* Pass false to disable this feature.
*/
deleteBansAfter: false,
/**
* @type {string[]}
* List of blacklisted domains.
* Messages containing blacklisted domains will automatically be warned.
* If the link is shortened, an attempt will be made to resolve it.
* If resolved link is blacklisted, it will be warned for.
*/
blacklistedDomains: [],
2017-11-25 22:55:28 +03:30
/**
* @type {( string[] | false )}
* List of whitelisted links and usernames,
* For channels and groups to stop warning users for them.
2020-03-09 23:27:19 +01:00
* Pass false to whitelist all links and channels.
2017-11-25 22:55:28 +03:30
*/
excludeLinks: [],
2018-11-28 18:23:57 +01:00
/**
* @type {ms}
* Don't count warns older than this value towards automatic ban.
* [Look at typedef above for details.]
*/
expireWarnsAfter: Infinity,
/**
2020-03-09 23:27:19 +01:00
* @type {InlineKeyboard}
* Inline keyboard to be added to reply to /groups.
* We use it to display button opening our webpage.
*/
groupsInlineKeyboard: [],
numberOfWarnsToBan: 3,
/**
* @type {string[]}
* List of plugin names to be loaded.
* See Readme in plugins directory for more details.
*/
plugins: [],
/**
2020-03-09 23:27:19 +01:00
* @type {InlineKeyboard}
* Inline keyboard to be added to warn message.
* We use it to display button showing our rules.
*/
warnInlineKeyboard: [],
};
2020-03-09 23:27:19 +01:00
module.exports = Object.freeze(config);