@grammyjs/auto-chat-action
Version:
A plugin for automatic sending a chat action
77 lines (76 loc) • 2.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getChatActionsForRequest = void 0;
const deps_js_1 = require("./deps.js");
const extractors = {
sendPhoto(payload) {
return (payload.photo instanceof deps_js_1.InputFile)
? ["upload_photo"]
: [];
},
sendAudio(payload) {
return (payload.audio instanceof deps_js_1.InputFile ||
payload.thumbnail instanceof deps_js_1.InputFile)
? ["upload_document"]
: [];
},
sendDocument(payload) {
return (payload.document instanceof deps_js_1.InputFile ||
payload.thumbnail instanceof deps_js_1.InputFile)
? ["upload_document"]
: [];
},
sendVideo(payload) {
return (payload.video instanceof deps_js_1.InputFile ||
payload.thumbnail instanceof deps_js_1.InputFile)
? ["upload_video"]
: [];
},
sendAnimation(payload) {
return (payload.animation instanceof deps_js_1.InputFile ||
payload.thumbnail instanceof deps_js_1.InputFile)
? ["upload_video"]
: [];
},
sendVoice(payload) {
return (payload.voice instanceof deps_js_1.InputFile)
? ["upload_voice"]
: [];
},
sendVideoNote(payload) {
return (payload.video_note instanceof deps_js_1.InputFile ||
payload.thumbnail instanceof deps_js_1.InputFile)
? ["upload_video_note"]
: [];
},
sendSticker(payload) {
return (payload.sticker instanceof deps_js_1.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);
},
};
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];
}
exports.getChatActionsForRequest = getChatActionsForRequest;