{"_id":"@dietime/telegraf-media-group","_rev":"5-707d41ab6380ba81b1c10c600aade84a","name":"@dietime/telegraf-media-group","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@dietime/telegraf-media-group","version":"1.0.0","author":{"name":"Denis Glazkov","email":"glazzk.off@mail.ru"},"license":"MIT","_id":"@dietime/telegraf-media-group@1.0.0","maintainers":[{"name":"dietime","email":"glazzk.off@mail.ru"}],"homepage":"https://github.com/DieTime/telegraf-media-group","bugs":{"url":"https://github.com/DieTime/telegraf-media-group/issues","email":"glazzk.off@mail.ru"},"dist":{"shasum":"443a17ca7bcaebb625c8e2e01a1933dddae7acfe","tarball":"https://registry.npmjs.org/@dietime/telegraf-media-group/-/telegraf-media-group-1.0.0.tgz","fileCount":9,"integrity":"sha512-3GIvlXUvf1SymUhwUX0o2A9F0dtFTjPaxSo+/Fs2Mw81OW3Ppz61ze8AlkNbqkutY21PRUYaEN+U7Tdsl7OQ8A==","signatures":[{"sig":"MEUCIQDZnSx13Mm+3tRurfFPubg709J1UJCj7E2ge4hFfCgS/AIgdINyb9hJxDUjbAG3RercpEYebAegg5dZje/k0lS+bCk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22558},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"80e62514b1700ea7ae0977a282b4603d7744397e","private":false,"scripts":{"build":"tsup"},"_npmUser":{"name":"dietime","email":"glazzk.off@mail.ru"},"repository":{"url":"git+https://github.com/DieTime/telegraf-media-group.git","type":"git"},"_npmVersion":"10.8.2","description":"All that you want to easily process media groups in telegraf.js","directories":{},"_nodeVersion":"20.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^16.4.5","eslint":"^8.57.0","prettier":"^3.3.3","telegraf":"^4.16.3","typescript":"^5.6.2","@types/node":"^22.6.1","typescript-eslint":"^8.6.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1"},"peerDependencies":{"telegraf":"^4.16.3"},"_npmOperationalInternal":{"tmp":"tmp/telegraf-media-group_1.0.0_1727304254690_0.1641811825152828","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@dietime/telegraf-media-group","version":"1.0.1","keywords":["telegraf","telegrafjs","media","group","mediagroup","middleware"],"author":{"name":"Denis Glazkov","email":"glazzk.off@mail.ru"},"license":"MIT","_id":"@dietime/telegraf-media-group@1.0.1","maintainers":[{"name":"dietime","email":"glazzk.off@mail.ru"}],"homepage":"https://github.com/DieTime/telegraf-media-group","bugs":{"url":"https://github.com/DieTime/telegraf-media-group/issues","email":"glazzk.off@mail.ru"},"dist":{"shasum":"f151e2a3af41495088fec16cb366d413b5b0fe43","tarball":"https://registry.npmjs.org/@dietime/telegraf-media-group/-/telegraf-media-group-1.0.1.tgz","fileCount":9,"integrity":"sha512-pELLzxV400088EYKrZO37e82Ar439SkU0nquW9x9mXQfRI+1qqquRqFE5m5ThFKsouEV28VhSk1DZQGdnk6mzQ==","signatures":[{"sig":"MEUCIQCBOXCdYlB/Wdm2UVKmWgg98doVAABI38Ka9svY3ttKyAIgUcqFzCqPQhaUThTO8y5+cEi1dIUj8Dyh0d/74kW5HY0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22688},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"edfefda1a461e75b6403b8f2d25118addd517643","private":false,"scripts":{"build":"tsup"},"_npmUser":{"name":"dietime","email":"glazzk.off@mail.ru"},"repository":{"url":"git+https://github.com/DieTime/telegraf-media-group.git","type":"git"},"_npmVersion":"10.8.2","description":"All that you want to easily process media groups in telegraf.js","directories":{},"_nodeVersion":"20.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^16.4.5","eslint":"^8.57.0","prettier":"^3.3.3","telegraf":"^4.16.3","typescript":"^5.6.2","@types/node":"^22.6.1","typescript-eslint":"^8.6.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1"},"peerDependencies":{"telegraf":"^4.16.3"},"_npmOperationalInternal":{"tmp":"tmp/telegraf-media-group_1.0.1_1727310856381_0.9663691343480085","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@dietime/telegraf-media-group","version":"1.0.2","keywords":["telegraf","media","group","mediagroup","telegraf-media-group","middleware"],"author":{"name":"Denis Glazkov","email":"glazzk.off@mail.ru"},"license":"MIT","_id":"@dietime/telegraf-media-group@1.0.2","maintainers":[{"name":"dietime","email":"glazzk.off@mail.ru"}],"homepage":"https://github.com/DieTime/telegraf-media-group","bugs":{"url":"https://github.com/DieTime/telegraf-media-group/issues","email":"glazzk.off@mail.ru"},"dist":{"shasum":"e8742af1b2ce84f9fb16dc714a6fc86083aa0110","tarball":"https://registry.npmjs.org/@dietime/telegraf-media-group/-/telegraf-media-group-1.0.2.tgz","fileCount":9,"integrity":"sha512-mg3cGa21rIee9O9NJ9AmQDkv6HvORJH+JA9wFe+iP0xwulOhjhJg+JcduHNCUOQaSNfzbsOWJ25M8EI8y+tzfQ==","signatures":[{"sig":"MEQCIHeNFajAXRU8ysqssADFNbnesG269fN0qyXtIh3w0G63AiAyZJA3StS7zkooy1S/tc7UNDizLAIAr2o3o3HDwpYfCA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22698},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"99e19cfbb74a974f6ebc1f70714d576265419650","private":false,"scripts":{"build":"tsup"},"_npmUser":{"name":"dietime","email":"glazzk.off@mail.ru"},"repository":{"url":"git+https://github.com/DieTime/telegraf-media-group.git","type":"git"},"_npmVersion":"10.8.2","description":"All that you want to easily process media groups in telegraf.js","directories":{},"_nodeVersion":"20.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^16.4.5","eslint":"^8.57.0","prettier":"^3.3.3","telegraf":"^4.16.3","typescript":"^5.6.2","@types/node":"^22.6.1","typescript-eslint":"^8.6.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1"},"peerDependencies":{"telegraf":"^4.16.3"},"_npmOperationalInternal":{"tmp":"tmp/telegraf-media-group_1.0.2_1727311124409_0.4548403472414908","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@dietime/telegraf-media-group","version":"1.0.3","keywords":["telegraf","media","group","mediagroup","telegraf-media-group","middleware"],"author":{"name":"Denis Glazkov","email":"glazzk.off@mail.ru"},"license":"MIT","_id":"@dietime/telegraf-media-group@1.0.3","maintainers":[{"name":"dietime","email":"glazzk.off@mail.ru"}],"homepage":"https://github.com/DieTime/telegraf-media-group","bugs":{"url":"https://github.com/DieTime/telegraf-media-group/issues","email":"glazzk.off@mail.ru"},"dist":{"shasum":"68bb48ebb0a451678ae682a3542aecd59a52cc16","tarball":"https://registry.npmjs.org/@dietime/telegraf-media-group/-/telegraf-media-group-1.0.3.tgz","fileCount":9,"integrity":"sha512-+aq/1BtC8CoPr+n4zthyLmAi9U+0MjP84uWnyOqxo39LQ4olzsh5OLDw8kTrQMCyb6Z8mVHWSGovbEMplSD9Yg==","signatures":[{"sig":"MEQCIDPvUU4sGXPRSbsb7OzjNMPOydhhve1QE7rBPD2ksSxJAiBkdvXlMrUmbu7dG5NlGBtW11SMNBFKGQqosSWcI90iFg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22791},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"b116dc9aeaf14b0a8eff508078c49d351d995728","private":false,"scripts":{"build":"tsup"},"_npmUser":{"name":"dietime","email":"glazzk.off@mail.ru"},"repository":{"url":"git+https://github.com/DieTime/telegraf-media-group.git","type":"git"},"_npmVersion":"10.8.2","description":"All that you want to easily process media groups in telegraf.js","directories":{},"_nodeVersion":"20.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^16.4.5","eslint":"^8.57.0","prettier":"^3.3.3","telegraf":"^4.16.3","typescript":"^5.6.2","@types/node":"^22.6.1","typescript-eslint":"^8.6.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1"},"peerDependencies":{"telegraf":"^4.16.3"},"_npmOperationalInternal":{"tmp":"tmp/telegraf-media-group_1.0.3_1727312791131_0.7503262799736585","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@dietime/telegraf-media-group","version":"1.0.4","keywords":["telegraf","media","group","mediagroup","telegraf-media-group","middleware"],"author":{"name":"Denis Glazkov","email":"glazzk.off@mail.ru"},"license":"MIT","_id":"@dietime/telegraf-media-group@1.0.4","maintainers":[{"name":"dietime","email":"glazzk.off@mail.ru"}],"homepage":"https://github.com/DieTime/telegraf-media-group","bugs":{"url":"https://github.com/DieTime/telegraf-media-group/issues","email":"glazzk.off@mail.ru"},"dist":{"shasum":"333d86bcaed8d7c0ab9d4bfe2d950ad42bbfc48c","tarball":"https://registry.npmjs.org/@dietime/telegraf-media-group/-/telegraf-media-group-1.0.4.tgz","fileCount":9,"integrity":"sha512-974STHmKgwtqB5SDnJu2kuzlDwwohyhaH64ap8LZsV2Uv7EO/07gU4+e+zEPQpT1XbxQen5dgV5hfyCRf2YVUw==","signatures":[{"sig":"MEYCIQCaJLdqzC7RzsWlv2kYR6y+JREkcR1cKVWOdp3HXQFAPgIhAPVK664JviVmlJqwhQAd4ZgUz6TfR9emobazEKzdGsu4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23233},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"a20e649d08195706651002f5e0b3f09167e6e0d9","private":false,"scripts":{"build":"tsup"},"_npmUser":{"name":"dietime","email":"glazzk.off@mail.ru"},"repository":{"url":"git+https://github.com/DieTime/telegraf-media-group.git","type":"git"},"_npmVersion":"10.8.2","description":"All that you want to easily process media groups in telegraf.js","directories":{},"_nodeVersion":"20.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^16.4.5","eslint":"^8.57.0","prettier":"^3.3.3","telegraf":"^4.16.3","typescript":"^5.6.2","@types/node":"^22.6.1","typescript-eslint":"^8.6.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1"},"peerDependencies":{"telegraf":"^4.16.3"},"_npmOperationalInternal":{"tmp":"tmp/telegraf-media-group_1.0.4_1727313403992_0.5955859379945556","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"@dietime/telegraf-media-group","version":"1.0.5","description":"All that you want to easily process media groups in telegraf.js","author":{"name":"Denis Glazkov","email":"glazzk.off@mail.ru"},"license":"MIT","private":false,"homepage":"https://github.com/DieTime/telegraf-media-group","repository":{"type":"git","url":"git+https://github.com/DieTime/telegraf-media-group.git"},"bugs":{"url":"https://github.com/DieTime/telegraf-media-group/issues","email":"glazzk.off@mail.ru"},"publishConfig":{"access":"public"},"keywords":["telegraf","media","group","mediagroup","telegraf-media-group","middleware"],"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","scripts":{"build":"tsup"},"devDependencies":{"@types/node":"^22.6.1","dotenv":"^16.4.5","eslint":"^8.57.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","prettier":"^3.3.3","telegraf":"^4.16.3","tsup":"^8.3.0","typescript":"^5.6.2","typescript-eslint":"^8.6.0"},"peerDependencies":{"telegraf":"^4.16.3"},"_id":"@dietime/telegraf-media-group@1.0.5","gitHead":"89c0f8255d0717d4838b1bca6e9ac07f1be9dbf6","_nodeVersion":"20.17.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-c7nFQanVWXfadE4fpD7wZZbwezQPA9g3uvwcGtkpfDfUxPkUGjmNSzKUvZy4jYe7VPtMho25lRpnKUu7yNbg8g==","shasum":"4ee2dc44c12366e6fe3fc762018abc5fc3880946","tarball":"https://registry.npmjs.org/@dietime/telegraf-media-group/-/telegraf-media-group-1.0.5.tgz","fileCount":9,"unpackedSize":23233,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHB51n52Rc5F2p48rUYBUQRkUkaxFDok9dBWQsoIgkBgAiEAzLVAgzhPjZdhoajZFBBPUL+FdGfOtdL3WN8VofBD+xI="}]},"_npmUser":{"name":"dietime","email":"glazzk.off@mail.ru"},"directories":{},"maintainers":[{"name":"dietime","email":"glazzk.off@mail.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/telegraf-media-group_1.0.5_1727338015648_0.1188001435645869"},"_hasShrinkwrap":false}},"time":{"created":"2024-09-25T22:44:14.583Z","modified":"2024-09-26T08:06:56.056Z","1.0.0":"2024-09-25T22:44:14.903Z","1.0.1":"2024-09-26T00:34:16.561Z","1.0.2":"2024-09-26T00:38:44.697Z","1.0.3":"2024-09-26T01:06:31.338Z","1.0.4":"2024-09-26T01:16:44.184Z","1.0.5":"2024-09-26T08:06:55.815Z"},"bugs":{"url":"https://github.com/DieTime/telegraf-media-group/issues","email":"glazzk.off@mail.ru"},"author":{"name":"Denis Glazkov","email":"glazzk.off@mail.ru"},"license":"MIT","homepage":"https://github.com/DieTime/telegraf-media-group","keywords":["telegraf","media","group","mediagroup","telegraf-media-group","middleware"],"repository":{"type":"git","url":"git+https://github.com/DieTime/telegraf-media-group.git"},"description":"All that you want to easily process media groups in telegraf.js","maintainers":[{"name":"dietime","email":"glazzk.off@mail.ru"}],"readme":"<p align=\"center\">\n    <img src=\"assets/icon.svg\" width=\"140px\" />\n</p>\n\n<p align=\"center\">\nAll that you want to easily process media groups in <a href=\"https://github.com/DieTime/telegraf-media-group\" style=\"color:#9676F2;font-weight:bold\">telegraf.js</a>\n</p>\n\n<p align=\"center\">\n   <img\n      src=\"https://img.shields.io/badge/telegraf.js-4.0-9676F2\"\n      alt=\"Compatible with telegraf.js v4.0\"\n   />\n\t<img\n      src=\"https://img.shields.io/github/languages/top/DieTime/telegraf-media-group?logo=typescript&color=9676F2&logoColor=ffffff\"\n      alt=\"Language: typescript\"\n   />\n\t<img\n      src=\"https://img.shields.io/npm/unpacked-size/%40dietime%2Ftelegraf-media-group?label=install%20size&color=9676F2\"\n      alt=\"Package size\"\n   />\n   <img\n      src=\"https://img.shields.io/github/license/DieTime/telegraf-media-group?color=9676F2\"\n      alt=\"License: MIT\"\n   />\n</p>\n\n## Introduction\n\nWhen writing a telegram bot using <a href=\"https://github.com/DieTime/telegraf-media-group\" style=\"color:#9676F2;font-weight:bold\">telegraf.js</a>, you may want to process a group of media sent by a user.\n\nThis package provides all that you want to solve this problem:\n\n- ⚡ Middleware\n- 🔥 Filters\n- 🚀 Wrapper types for context\n\n## Installation\n\n```bash\n$ npm i @dietime/telegraf-media-group\n```\n\n## Usage\n\n### Attaching `MediaGroup` middleware\n\nYou need to attach `MediaGroup` middleware to your bot so that when you receive media group messages, these messages will be accumulated. \n\n```ts\nimport { MediaGroup } from '@dietime/telegraf-media-group'\n\nbot.use(new MediaGroup({ timeout: 1000 }).middleware())\n```\n\nThe `timeout` option controls the time the middleware will wait for the next media group message. If no message is received within this timeout, middleware sends a message with accumulated media group messages for processing.\n\n### Processing a photo and video media group\n\nTo process a media group that contains both photos and videos, use the `media_group()` filter and wrap the context in the `MediaGroupContext<T>` type for better typing.\n\n```ts\nimport { media_group, type MediaGroupContext } from '@dietime/telegraf-media-group'\n\nbot.on(media_group(), (ctx: MediaGroupContext<Context>) => {\n   for (const media of ctx.update.media_group) {\n      if ('photo' in media) {\n         console.log('Photo:', media.photo)\n      }\n\n      if ('video' in media) {\n         console.log('Video:', media.video)\n      }\n   }\n})\n```\n\n### Processing a photo-only media group\n\nTo process a media group that contains only photos, use `photo_media_group()` filter and wrap the context in `PhotoMediaGroupContext<T>` type for better typing.\n\n```ts\nimport { photo_media_group, type PhotoMediaGroupContext } from '@dietime/telegraf-media-group'\n\nbot.on(photo_media_group(), (ctx: PhotoMediaGroupContext<Context>) => {\n   for (const media of ctx.update.media_group) {\n      console.log('Photo:', media.photo)\n   }\n})\n```\n\n### Processing a video-only media group\n\nTo process a media group that contains only videos, use `video_media_group()` filter and wrap the context in `VideoMediaGroupContext<T>` type for better typing.\n\n```ts\nimport { video_media_group, type VideoMediaGroupContext } from '@dietime/telegraf-media-group'\n\nbot.on(video_media_group(), (ctx: VideoMediaGroupContext<Context>) => {\n   for (const media of ctx.update.media_group) {\n      console.log('Video:', media.video)\n   }\n})\n```\n","readmeFilename":"README.md"}