2018-05-04 14:21:51 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const warn = require('../actions/warn');
|
2018-11-20 11:47:30 +05:30
|
|
|
const ban = require('../actions/ban');
|
2019-01-31 20:19:39 +01:00
|
|
|
const batchBan = require('../actions/batchBan');
|
2018-11-20 11:47:30 +05:30
|
|
|
const { scheduleDeletion } = require('../utils/tg');
|
2018-05-04 14:21:51 +02:00
|
|
|
|
2018-11-20 11:47:30 +05:30
|
|
|
const {
|
|
|
|
warnInlineKeyboard,
|
2020-05-14 23:18:25 +02:00
|
|
|
chats = {},
|
2018-11-20 11:47:30 +05:30
|
|
|
deleteWarnsAfter = false,
|
|
|
|
deleteBansAfter = false,
|
2020-03-09 23:27:19 +01:00
|
|
|
} = require('../utils/config').config;
|
2018-05-04 14:21:51 +02:00
|
|
|
|
2018-11-20 11:47:30 +05:30
|
|
|
const normalisedDeleteWarnsAfter = typeof deleteWarnsAfter === 'object'
|
|
|
|
? { auto: false, manual: false, ...deleteWarnsAfter }
|
|
|
|
: { auto: deleteWarnsAfter, manual: deleteWarnsAfter };
|
|
|
|
|
|
|
|
const reply_markup = { inline_keyboard: warnInlineKeyboard };
|
2018-05-04 14:21:51 +02:00
|
|
|
|
2020-03-10 22:10:48 +01:00
|
|
|
/** @type { import('../typings/context').ContextExtensions } */
|
2018-05-04 14:21:51 +02:00
|
|
|
module.exports = {
|
2018-11-20 11:47:30 +05:30
|
|
|
async ban({ admin, reason, userToBan }) {
|
|
|
|
const banMessage = await ban({ admin, reason, userToBan });
|
2020-05-14 23:18:25 +02:00
|
|
|
return this.loggedReply(banMessage)
|
2018-11-20 11:47:30 +05:30
|
|
|
.then(scheduleDeletion(deleteBansAfter));
|
|
|
|
},
|
2020-05-14 23:18:25 +02:00
|
|
|
async batchBan({ admin, reason, targets }) {
|
|
|
|
const banMessage = await batchBan({ admin, reason, targets });
|
|
|
|
return this.loggedReply(banMessage)
|
2019-01-31 20:19:39 +01:00
|
|
|
.then(scheduleDeletion(deleteBansAfter));
|
|
|
|
},
|
2019-05-31 17:02:00 +02:00
|
|
|
async warn({ admin, amend, reason, userToWarn, mode }) {
|
|
|
|
const warnMessage = await warn({ admin, amend, reason, userToWarn });
|
2020-05-14 23:18:25 +02:00
|
|
|
return this.loggedReply(warnMessage, { reply_markup })
|
2018-11-20 11:47:30 +05:30
|
|
|
.then(scheduleDeletion(normalisedDeleteWarnsAfter[mode]));
|
2018-05-04 14:21:51 +02:00
|
|
|
},
|
2020-02-19 08:11:32 +01:00
|
|
|
|
2020-05-14 23:18:25 +02:00
|
|
|
loggedReply(html, extra) {
|
|
|
|
if (chats.adminLog) {
|
|
|
|
this.tg
|
|
|
|
.sendMessage(
|
|
|
|
chats.adminLog,
|
|
|
|
html.toJSON().replace(/\[<code>(\d+)<\/code>\]/g, '[#u$1]'),
|
|
|
|
{ parse_mode: 'HTML' },
|
|
|
|
)
|
|
|
|
.catch(() => null);
|
|
|
|
}
|
|
|
|
return this.replyWithHTML(html, extra);
|
|
|
|
},
|
|
|
|
|
2020-02-19 08:11:32 +01:00
|
|
|
replyWithCopy(content, options) {
|
2022-05-31 17:17:45 +02:00
|
|
|
return this.telegram.sendCopy(this.chat.id, content, options);
|
2020-02-19 08:11:32 +01:00
|
|
|
},
|
2018-05-04 14:21:51 +02:00
|
|
|
};
|