UNPKG

@grammyjs/auto-chat-action

Version:

A plugin for automatic sending a chat action

73 lines (72 loc) 2.24 kB
import { InputFile } from "./deps.js"; const extractors = { sendPhoto(payload) { return (payload.photo instanceof InputFile) ? ["upload_photo"] : []; }, sendAudio(payload) { return (payload.audio instanceof InputFile || payload.thumbnail instanceof InputFile) ? ["upload_document"] : []; }, sendDocument(payload) { return (payload.document instanceof InputFile || payload.thumbnail instanceof InputFile) ? ["upload_document"] : []; }, sendVideo(payload) { return (payload.video instanceof InputFile || payload.thumbnail instanceof InputFile) ? ["upload_video"] : []; }, sendAnimation(payload) { return (payload.animation instanceof InputFile || payload.thumbnail instanceof InputFile) ? ["upload_video"] : []; }, sendVoice(payload) { return (payload.voice instanceof InputFile) ? ["upload_voice"] : []; }, sendVideoNote(payload) { return (payload.video_note instanceof InputFile || payload.thumbnail instanceof InputFile) ? ["upload_video_note"] : []; }, sendSticker(payload) { return (payload.sticker instanceof InputFile) ? ["choose_sticker"] : []; }, sendMediaGroup(payload) { return payload.media.map((media) => { if (media.type === "audio") { return "upload_document"; } if (media.type === "document") { return "upload_document"; } if (media.type === "photo") { return "upload_photo"; } if (media.type === "video") { return "upload_video"; } }).filter((item) => item); }, }; export function getChatActionsForRequest(method, payload) { if (!(method in extractors)) { return [false, []]; } // @ts-expect-error existence of method has been checked const chatActions = extractors[method](payload); return [chatActions.length > 0, chatActions]; }