Skip to content

Commit a5472bd

Browse files
committed
feat: WIP update context.js to TS
Intermediate commit to trick git into diffing correctly
1 parent e3a0cc3 commit a5472bd

File tree

1 file changed

+53
-29
lines changed

1 file changed

+53
-29
lines changed

bot/context.js

Lines changed: 53 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,79 @@
1-
'use strict';
1+
import warn from "../actions/warn";
2+
import ban from "../actions/ban";
3+
import batchBan from "../actions/batchBan";
4+
import { scheduleDeletion } from "../utils/tg";
25

3-
const warn = require('../actions/warn');
4-
const ban = require('../actions/ban');
5-
const batchBan = require('../actions/batchBan');
6-
const { scheduleDeletion } = require('../utils/tg');
6+
import { config } from "../utils/config";
7+
import { ContextExtensions } from "../typings/context";
78

89
const {
910
warnInlineKeyboard,
1011
chats = {},
1112
deleteWarnsAfter = false,
1213
deleteBansAfter = false,
13-
} = require('../utils/config').config;
14+
} = config;
1415

15-
const normalisedDeleteWarnsAfter = typeof deleteWarnsAfter === 'object'
16-
? { auto: false, manual: false, ...deleteWarnsAfter }
17-
: { auto: deleteWarnsAfter, manual: deleteWarnsAfter };
16+
const normalisedDeleteWarnsAfter =
17+
typeof deleteWarnsAfter === "object"
18+
? deleteWarnsAfter
19+
: { auto: deleteWarnsAfter, manual: deleteWarnsAfter };
1820

1921
const reply_markup = { inline_keyboard: warnInlineKeyboard };
2022

21-
/** @type { import('../typings/context').ContextExtensions } */
22-
module.exports = {
23-
async ban({ admin, reason, userToBan }) {
23+
export const extn: ContextExtensions = {
24+
async ban({ admin, reason, userToBan, msg }) {
2425
const banMessage = await ban({ admin, reason, userToBan });
25-
return this.loggedReply(banMessage)
26-
.then(scheduleDeletion(deleteBansAfter));
26+
27+
const done = this.loggedReply(banMessage, msg).then(
28+
scheduleDeletion(deleteBansAfter)
29+
);
30+
31+
if (msg)
32+
this.telegram
33+
.deleteMessage(msg.chat.id, msg.message_id)
34+
.catch(() => null);
35+
36+
return done;
2737
},
38+
2839
async batchBan({ admin, reason, targets }) {
2940
const banMessage = await batchBan({ admin, reason, targets });
30-
return this.loggedReply(banMessage)
31-
.then(scheduleDeletion(deleteBansAfter));
41+
return this.loggedReply(banMessage).then(scheduleDeletion(deleteBansAfter));
3242
},
33-
async warn({ admin, amend, reason, userToWarn, mode }) {
43+
44+
async warn({ admin, amend, reason, userToWarn, mode, msg }) {
3445
const warnMessage = await warn({ admin, amend, reason, userToWarn });
35-
return this.loggedReply(warnMessage, { reply_markup })
36-
.then(scheduleDeletion(normalisedDeleteWarnsAfter[mode]));
46+
47+
const done = this.loggedReply(warnMessage, msg, { reply_markup }).then(
48+
scheduleDeletion(normalisedDeleteWarnsAfter[mode])
49+
);
50+
51+
if (msg)
52+
this.telegram
53+
.deleteMessage(msg.chat.id, msg.message_id)
54+
.catch(() => null);
55+
56+
return done;
3757
},
3858

39-
loggedReply(html, extra) {
59+
async loggedReply(html, reply, extra) {
4060
if (chats.adminLog) {
41-
this.tg
42-
.sendMessage(
61+
const msg =
62+
reply &&
63+
(await this.telegram.forwardMessage(
4364
chats.adminLog,
44-
html.toJSON().replace(/\[<code>(\d+)<\/code>\]/g, '[#u$1]'),
45-
{ parse_mode: 'HTML' },
46-
)
65+
reply.chat.id,
66+
reply.message_id
67+
));
68+
this.telegram
69+
// @ts-expect-error sendMessage is monkeypatched to accept TgHtml
70+
.sendMessage(chats.adminLog, html, {
71+
parse_mode: "HTML",
72+
reply_to_message_id: msg?.message_id,
73+
})
4774
.catch(() => null);
4875
}
76+
// @ts-expect-error sendMessage is monkeypatched to accept TgHtml
4977
return this.replyWithHTML(html, extra);
5078
},
51-
52-
replyWithCopy(content, options) {
53-
return this.telegram.sendCopy(this.chat.id, content, options);
54-
},
5579
};

0 commit comments

Comments
 (0)