// @ts-check 'use strict'; const millisecond = require('millisecond'); const { telegram } = require('../bot'); const html = require('tg-html'); const R = require('ramda'); const replyId = R.path([ 'reply_to_message', 'message_id' ]); const isCommand = R.pipe( R.defaultTo({}), R.path([ 'entities', 0 ]), R.defaultTo({}), R.whereEq({ offset: 0, type: 'bot_command' }), ); const escapeHtml = s => s .replace(/&/g, '&') .replace(/"/g, '"') .replace(/'/g, ''') .replace(/ ({ reply_markup: { inline_keyboard } }); const msgLink = msg => `https://t.me/c/${msg.chat.id.toString().slice(4)}/${msg.message_id}`; const link = ({ id, first_name }) => html`${first_name}`; const quietLink = (user) => user.username ? html`${user.first_name}` : link(user); const displayUser = user => user.first_name ? link(user) : html`an user with id ${user.id}`; /** @param {number | string | false} ms */ const deleteAfter = ms => (ctx, next) => { if (ms !== false) { setTimeout(ctx.deleteMessage, millisecond(ms)); } next(); }; /** @param {number | string | false} ms */ const scheduleDeletion = (ms = 5 * 60 * 1000) => message => { const { chat, message_id } = message; if (chat.type !== 'private' && ms !== false) { message.timeout = setTimeout( () => telegram.deleteMessage(chat.id, message_id), millisecond(ms) ); } return message; }; module.exports = { deleteAfter, displayUser, escapeHtml, inlineKeyboard, isCommand, link, msgLink, quietLink, replyId, scheduleDeletion, };