@aracna/telegram-bot 2.0.7 → 2.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +18 -18
- package/index.cjs +1 -0
- package/package.json +6 -31
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2022 Dario Sechi
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Dario Sechi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-

|
|
2
|
-

|
|
3
|
-
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
4
|
-
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
5
|
-
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
6
|
-
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
7
|
-
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
8
|
-
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
9
|
-
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
10
|
-
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
11
|
-
|
|
12
|
-
# Aracna Telegram Bot
|
|
13
|
-
|
|
14
|
-
This library makes building Telegram Bot back-ends a breeze by abstracting all the tedious parts and exposing a simple API to work with.
|
|
15
|
-
|
|
16
|
-
### Documentation
|
|
17
|
-
|
|
18
|
-
You can find the telegram bot documentation on the [Aracna Website](https://aracna.dariosechi.it).
|
|
1
|
+

|
|
2
|
+

|
|
3
|
+
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
4
|
+
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
5
|
+
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
6
|
+
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
7
|
+
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
8
|
+
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
9
|
+
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
10
|
+
[](https://sonarcloud.io/summary/new_code?id=aracna_telegram-bot)
|
|
11
|
+
|
|
12
|
+
# Aracna Telegram Bot
|
|
13
|
+
|
|
14
|
+
This library makes building Telegram Bot back-ends a breeze by abstracting all the tedious parts and exposing a simple API to work with.
|
|
15
|
+
|
|
16
|
+
### Documentation
|
|
17
|
+
|
|
18
|
+
You can find the telegram bot documentation on the [Aracna Website](https://aracna.dariosechi.it).
|
package/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var Y=Object.defineProperty;var uo=Object.getOwnPropertyDescriptor;var fo=Object.getOwnPropertyNames;var ho=Object.prototype.hasOwnProperty;var Co=(t,e)=>{for(var r in e)Y(t,r,{get:e[r],enumerable:!0})},To=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of fo(e))!ho.call(t,s)&&s!==r&&Y(t,s,{get:()=>e[s],enumerable:!(n=uo(e,s))||n.enumerable});return t};var yo=t=>To(Y({},"__esModule",{value:!0}),t);var So={};Co(So,{DEFAULT_TELEGRAM_ALLOWED_UPDATES:()=>u,DEFAULT_TELEGRAM_CALLBACK_QUERY_BODY:()=>E,DEFAULT_TELEGRAM_CLIENT_LISTENER_OPTIONS:()=>L,DEFAULT_TELEGRAM_CLIENT_POLLING_MS:()=>P,DEFAULT_TELEGRAM_REPLY_TO_MESSAGE_BODY:()=>y,DEFAULT_TELEGRAM_START_MESSAGE_BODY:()=>S,REGEXP_TELEGRAM_COMMAND:()=>_,REGEXP_TELEGRAM_COMMAND_WITH_USERNAME:()=>I,TelegramAPI:()=>o,TelegramClassLogger:()=>c,TelegramClient:()=>j,TelegramFileAPI:()=>z,TelegramLoggerName:()=>G,addTelegramStickerToSet:()=>Ge,answerTelegramCallbackQuery:()=>Ue,answerTelegramInlineQuery:()=>De,answerTelegramPreCheckoutQuery:()=>ve,answerTelegramShippingQuery:()=>Re,answerTelegramWebAppQuery:()=>we,approveTelegramChatJoinRequest:()=>Oe,banTelegramChatMember:()=>Ne,banTelegramChatSenderChat:()=>Qe,closeTelegramForumTopic:()=>et,closeTelegramGeneralForumTopic:()=>tt,closeTelegramWebhook:()=>Fe,convertTelegramGiftToStars:()=>Et,copyTelegramMessage:()=>rt,copyTelegramMessages:()=>ot,createTelegramChatInviteLink:()=>nt,createTelegramChatSubscriptionInviteLink:()=>it,createTelegramForumTopic:()=>st,createTelegramInvoiceLink:()=>at,createTelegramNewStickerSet:()=>ct,declineTelegramChatJoinRequest:()=>mt,decodeTelegramCallbackQueryBody:()=>O,decodeTelegramReplyToMessageBody:()=>Q,decodeTelegramStartBody:()=>W,deleteTelegramBusinessMessages:()=>Ve,deleteTelegramChatPhoto:()=>ne,deleteTelegramChatStickerSet:()=>ie,deleteTelegramCommands:()=>ae,deleteTelegramForumTopic:()=>se,deleteTelegramMessage:()=>k,deleteTelegramMessages:()=>U,deleteTelegramStickerFromSet:()=>ce,deleteTelegramStickerSet:()=>me,deleteTelegramStory:()=>vr,deleteTelegramWebhook:()=>F,downloadTelegramFile:()=>re,downloadTelegramUserFirstProfilePhoto:()=>lt,editTelegramChatInviteLink:()=>pt,editTelegramChatSubscriptionInviteLink:()=>gt,editTelegramForumTopic:()=>dt,editTelegramGeneralForumTopic:()=>ut,editTelegramMessageCaption:()=>ft,editTelegramMessageLiveLocation:()=>ht,editTelegramMessageMedia:()=>Ct,editTelegramMessageReplyMarkup:()=>Tt,editTelegramMessageText:()=>yt,editTelegramStory:()=>Rr,editTelegramUserStarSubscription:()=>St,encodeTelegramCallbackQueryBody:()=>N,encodeTelegramReplyToMessageBody:()=>Z,encodeTelegramReplyToMessageBodyToAnchorTag:()=>V,encodeTelegramReplyToMessageBodyToURL:()=>ee,encodeTelegramStartBody:()=>K,encodeTelegramStartBodyToAnchorTag:()=>_e,encodeTelegramStartBodyToText:()=>Ie,encodeTelegramStartBodyToURL:()=>te,exportTelegramChatInviteLink:()=>bt,forwardTelegramMessage:()=>Mt,forwardTelegramMessages:()=>At,getMyTelegramCommands:()=>ye,getMyTelegramDefaultAdministratorRights:()=>Se,getMyTelegramDescription:()=>be,getMyTelegramName:()=>Me,getMyTelegramShortDescription:()=>Ae,getTelegramAvailableGifts:()=>Pt,getTelegramBusinessAccountGifts:()=>We,getTelegramBusinessAccountStarBalance:()=>Ke,getTelegramBusinessConnection:()=>je,getTelegramChat:()=>le,getTelegramChatAdministrators:()=>pe,getTelegramChatMember:()=>ge,getTelegramChatMemberCount:()=>de,getTelegramChatMenuButton:()=>ue,getTelegramCommand:()=>x,getTelegramCommandByContext:()=>Be,getTelegramContextChat:()=>H,getTelegramContextChatID:()=>Xr,getTelegramContextChatType:()=>zr,getTelegramContextUser:()=>M,getTelegramContextUserFirstName:()=>Zr,getTelegramContextUserID:()=>eo,getTelegramContextUserLastName:()=>to,getTelegramContextUserUsername:()=>ro,getTelegramCustomEmojiStickers:()=>fe,getTelegramFile:()=>D,getTelegramForumTopicIconStickers:()=>he,getTelegramGameHighScores:()=>Ce,getTelegramInlineKeyboardCallbackButton:()=>oo,getTelegramInlineKeyboardGameButton:()=>no,getTelegramInlineKeyboardLoginButton:()=>io,getTelegramInlineKeyboardPayButton:()=>so,getTelegramInlineKeyboardQueryButton:()=>ao,getTelegramInlineKeyboardQueryChosenChatButton:()=>co,getTelegramInlineKeyboardQueryCurrentChatButton:()=>mo,getTelegramInlineKeyboardTextButton:()=>lo,getTelegramInlineKeyboardUrlButton:()=>po,getTelegramInlineKeyboardWebAppButton:()=>go,getTelegramMe:()=>Te,getTelegramProgressHTML:()=>Kt,getTelegramStarTransactions:()=>Ee,getTelegramStickerSet:()=>Pe,getTelegramUpdates:()=>v,getTelegramUserChatBoosts:()=>ke,getTelegramUserProfilePhotos:()=>R,getTelegramWebhookInfo:()=>xe,giftTelegramPremiumSubscription:()=>kt,hideTelegramGeneralForumTopic:()=>Lt,leaveTelegramChat:()=>_t,logOutTelegram:()=>It,omitTelegramCommand:()=>Le,pinTelegramChatMessage:()=>Gt,postTelegramStory:()=>wr,promoteTelegramChatMember:()=>Ut,readTelegramBusinessMessage:()=>qe,refundTelegramStarPayment:()=>Dt,removeTelegramBusinessAccountProfilePhoto:()=>Je,removeTelegramChatVerification:()=>Jr,removeTelegramUserVerification:()=>Hr,reopenTelegramForumTopic:()=>vt,reopenTelegramGeneralForumTopic:()=>Rt,replaceTelegramStickerInSet:()=>wt,restrictTelegramChatMember:()=>Ot,revokeTelegramChatInviteLink:()=>Nt,sanitizeTelegramHTML:()=>q,saveTelegramPreparedInlineMessage:()=>Qt,sendTelegramAnimation:()=>jt,sendTelegramAudio:()=>qt,sendTelegramChatAction:()=>Ht,sendTelegramContact:()=>Yt,sendTelegramDice:()=>$t,sendTelegramDocument:()=>Jt,sendTelegramGame:()=>Xt,sendTelegramGift:()=>Ft,sendTelegramInvoice:()=>zt,sendTelegramLocation:()=>Zt,sendTelegramMediaGroup:()=>er,sendTelegramMessage:()=>J,sendTelegramMessageHTML:()=>tr,sendTelegramPaidMedia:()=>rr,sendTelegramPhoto:()=>or,sendTelegramPoll:()=>nr,sendTelegramRepliableMessage:()=>ir,sendTelegramSticker:()=>sr,sendTelegramVenue:()=>ar,sendTelegramVideo:()=>cr,sendTelegramVideoNote:()=>mr,sendTelegramVoice:()=>lr,setMyTelegramCommands:()=>br,setMyTelegramDefaultAdministratorRights:()=>Mr,setMyTelegramDescription:()=>Ar,setMyTelegramName:()=>Er,setMyTelegramShortDescription:()=>Pr,setTelegramBusinessAccountBio:()=>He,setTelegramBusinessAccountGiftSettings:()=>Ye,setTelegramBusinessAccountName:()=>$e,setTelegramBusinessAccountProfilePhoto:()=>Xe,setTelegramBusinessAccountUsername:()=>ze,setTelegramChatAdministratorCustomTitle:()=>pr,setTelegramChatDescription:()=>gr,setTelegramChatMenuButton:()=>dr,setTelegramChatPermissions:()=>ur,setTelegramChatPhoto:()=>fr,setTelegramChatStickerSet:()=>hr,setTelegramChatTitle:()=>Cr,setTelegramCustomEmojiStickerSetThumbnail:()=>Tr,setTelegramGameScore:()=>yr,setTelegramMessageReaction:()=>Sr,setTelegramPassportDataErrors:()=>kr,setTelegramStickerEmojiList:()=>Fr,setTelegramStickerKeywords:()=>xr,setTelegramStickerMaskPosition:()=>Br,setTelegramStickerPositionInSet:()=>Lr,setTelegramStickerSetThumbnail:()=>_r,setTelegramStickerSetTitle:()=>Ir,setTelegramUserEmojiStatus:()=>Gr,setTelegramWebhook:()=>w,stopTelegramMessageLiveLocation:()=>Ur,stopTelegramPoll:()=>Dr,transferTelegramBusinessAccountStars:()=>Ze,transferTelegramGift:()=>xt,unbanTelegramChatMember:()=>Or,unbanTelegramChatSenderChat:()=>Nr,unhideTelegramGeneralForumTopic:()=>Qr,unpinAllTelegramChatMessages:()=>Vr,unpinAllTelegramForumTopicMessages:()=>Wr,unpinAllTelegramGeneralForumTopicMessages:()=>Kr,unpinTelegramChatMessage:()=>jr,upgradeTelegramGift:()=>Bt,uploadTelegramStickerFile:()=>qr,verifyTelegramChat:()=>Yr,verifyTelegramUser:()=>$r});module.exports=yo(So);var g=require("@aracna/core"),$=class extends g.RestAPI{queue=new g.Queue({autostart:!0});async post(e,r,n){let s,a,d,A;return s=n?.token??this.config?.token,s?(a=new g.DeferredPromise,d=async()=>{let h;return h=await super.post("/bot"+s+"/"+e,r,n),h instanceof Error?h:h.data.result},A=h=>{h.fn===d&&(a.resolve(h.value),this.queue.off("process-fulfill",A))},this.queue.on("process-fulfill",A),this.queue.push(d),a.instance):g.FetchError.from(new Error("The token is required."))}async transformBody(e,r,n,s){if(e==="POST"&&(0,g.isObject)(n)){for(let a in n)if(n[a]instanceof Blob)return(0,g.serializeFormData)(n);return n}}getToken(){return this.config.token}setToken(e){return this.config.token=e,this}},o=new $("https://api.telegram.org",{decode:{json:{castBigIntStringToBigInt:!0,castUnsafeIntToBigInt:!0}},encode:{json:{castBigIntToString:!0}}});var B=require("@aracna/core"),X=class extends B.RestAPI{async get(e,r){let n,s;return n=r?.token??this.config?.token,n?(s=await super.get("/file/bot"+n+"/"+e,r),s instanceof Error?s:s.data):B.FetchError.from(new Error("The token is required."))}getToken(){return this.config.token}setToken(e){return this.config.token=e,this}},z=new X("https://api.telegram.org");var i=require("@aracna/core");var u=["business_connection","business_message","callback_query","channel_post","chat_boost","chat_join_request","chat_member","chosen_inline_result","deleted_business_messages","edited_business_message","edited_channel_post","edited_message","inline_query","message","message_reaction","message_reaction_count","my_chat_member","poll","poll_answer","pre_checkout_query","removed_chat_boost","shipping_query"],E=()=>({d:null}),L=()=>({deleteOnCallbackQuery:!1,deleteOnMessageStart:!1,deleteOnReply:!1}),P=1e3,C=()=>({castBigIntStringToBigInt:!0,castUnsafeIntToBigInt:!0}),T=()=>({castBigIntToString:!0}),y=()=>({d:null}),S=()=>({d:null}),_=/\/[a-z_]+/m,I=/\/[a-zA-Z0-9_@]+/;var oe=require("@aracna/core");var G=(e=>(e.CLASS="TELEGRAM_CLASS",e))(G||{});var c=new oe.Logger("TELEGRAM_CLASS");async function ne(t,e){return o.post("deleteChatPhoto",t,e)}async function ie(t,e){return o.post("deleteChatStickerSet",t,e)}async function se(t,e){return o.post("deleteForumTopic",t,e)}async function k(t,e){return o.post("deleteMessage",t,e)}async function U(t,e){return o.post("deleteMessages",t,e)}async function ae(t,e){return o.post("deleteMyCommands",t,e)}async function ce(t,e){return o.post("deleteStickerFromSet",t,e)}async function me(t,e){return o.post("deleteStickerSet",t,e)}async function le(t,e){return o.post("getChat",t,e)}async function pe(t,e){return o.post("getChatAdministrators",t,e)}async function ge(t,e){return o.post("getChatMember",t,e)}async function de(t,e){return o.post("getChatMemberCount",t,e)}async function ue(t,e){return o.post("getChatMenuButton",t,e)}async function fe(t,e){return o.post("getCustomEmojiStickers",t,e)}async function D(t,e){return o.post("getFile",t,e)}async function he(t){return o.post("getForumTopicIconStickers",void 0,t)}async function Ce(t,e){return o.post("getGameHighScores",t,e)}async function Te(t){return o.post("getMe",void 0,t)}async function ye(t,e){return o.post("getMyCommands",t,e)}async function Se(t,e){return o.post("getMyDefaultAdministratorRights",t,e)}async function be(t,e){return o.post("getMyDescription",t,e)}async function Me(t,e){return o.post("getMyName",t,e)}async function Ae(t,e){return o.post("getMyShortDescription",t,e)}async function Ee(t,e){return o.post("getStarTransactions",t,e)}async function Pe(t,e){return o.post("getStickerSet",t,e)}async function v(t,e){let r;return r=await o.post("getUpdates",{allowed_updates:u,...t},e),r instanceof Error||Array.isArray(r)?r:[r]}async function ke(t,e){return o.post("getUserChatBoosts",t,e)}async function R(t,e){return o.post("getUserProfilePhotos",t,e)}async function Fe(t){return o.post("close",void 0,t)}async function F(t,e){return o.post("deleteWebhook",t,e)}async function xe(t){return o.post("getWebhookInfo",void 0,t)}async function w(t,e){return o.post("setWebhook",{allowed_updates:u,...t},e)}var p=require("@aracna/core");function O(t){let e;return t?(e=(0,p.tc)(()=>(0,p.decodeJSON)((0,p.decodeText)((0,p.decodeBase64)(t)),C())),e instanceof Error?E():e):E()}function N(t){let e;return e={c:t?.chatID,d:t?.data,m:t?.command},(0,p.encodeBase64)((0,p.encodeText)((0,p.encodeJSON)(e,T(),"{}")))}var b=require("@aracna/core");function Be(t){let e;switch(!0){case(0,b.hasObjectProperty)(t,"caption"):e=(0,b.getObjectProperty)(t,"caption","");break;case(0,b.hasObjectProperty)(t,"text"):e=(0,b.getObjectProperty)(t,"text","");break}return x(e)}function x(t){if(typeof t=="string")return _.exec(t.slice(0,512))?.[0].slice(1)}function Le(t){return t?.replace(I,"").trim()??""}var m=require("@aracna/core");function Q(t){let e,r,n;return e=t[t.length-1],e?.url?(r=new URL(e.url).searchParams.get("a"),r?(n=(0,m.tc)(()=>(0,m.decodeJSON)((0,m.decodeText)((0,m.decodeBase64)(r)),C())),n instanceof Error?y():n):y()):y()}function Z(t){let e;return e={c:t?.chatID,d:t?.data,m:t?.command},(0,m.encodeBase64)((0,m.encodeText)((0,m.encodeJSON)(e,T(),"{}")))}function V(t){return`<a href="${ee(t)}">\u200A</a>`}function ee(t){return(0,m.appendSearchParamsToURL)("https://t.me",{a:Z(t)})}var l=require("@aracna/core");function W(t){let e,r;return t?(e=t.replace("/start","").trim(),e.length<=0?S():(r=(0,l.tc)(()=>(0,l.decodeJSON)((0,l.decodeText)((0,l.decodeBase64)(e)),C())),r instanceof Error?S():r)):S()}function K(t){let e;return e={c:t?.chatID,d:t?.data,m:t?.command},(0,l.encodeBase64)((0,l.encodeText)((0,l.encodeJSON)(e,T(),"{}")))}function _e(t,e,r){return`<a href="${te(t,r)}">${e}</a>`}function Ie(t){return`/start ${K(t)}`}function te(t,e){return(0,l.appendSearchParamsToURL)(`https://t.me/${t}`,{start:K(e)})}var j=class{listeners;id;offset;token;constructor(e){this.listeners=[],this.id=(0,i.generateRandomString)({prefix:"telegram-client"}),this.token=e}async connect(e,r){switch(e){case"polling":(0,i.setInterval)(()=>this.poll(r?.polling),r?.polling?.ms??P,this.id,{autorun:!0}),c.info("Telegram","connect","The client is now polling the updates.");break;case"webhook":{let n,s;if(!r?.webhook?.url)return new Error("The webhook URL is required.");if(n=await F(r.webhook.delete,{token:this.token}),n instanceof Error)return n;if(c.verbose("Telegram","connect","The webhook has been deleted."),s=await w(r.webhook,{token:this.token}),s instanceof Error)return s;c.info("Telegram","connect","The webhook has been set.");break}}}async disconnect(e){this.offset=void 0,c.verbose("Telegram","disconnect","The offset has been reset.",[this.offset]),(0,i.clearInterval)(this.id),c.info("Telegram","disconnect","The client has been disconnected."),await F(e?.webhook,{token:this.token}),c.info("Telegram","disconnect","The webhook has been deleted.")}on(e,r,n){let s,a;if(s={command:n?.command,description:n?.description,id:(0,i.generateRandomString)({blacklist:this.listenerIDs}),middleware:r,type:e,options:(0,i.mergeObjects)(L(),(0,i.omitObjectProperties)(n??{},["description","key"]))},a=this.findListener(s.type,s.command),a){a.middleware=r,c.verbose("Telegram","register","The listener has been updated.",s);return}this.listeners.push(s),c.verbose("Telegram","register","The listener has been registered.",s)}handle(e){let r;switch(!0){case(0,i.hasObjectProperty)(e,"business_connection"):r=this.handleBusinessConnection(e.business_connection);break;case(0,i.hasObjectProperty)(e,"business_message"):r=this.handleBusinessMessage(e.business_message);break;case(0,i.hasObjectProperty)(e,"callback_query.data"):r=this.handleCallbackQuery(e.callback_query);break;case(0,i.hasObjectProperty)(e,"channel_post"):r=this.handleChannelPost(e.channel_post);break;case(0,i.hasObjectProperty)(e,"chat_boost"):r=this.handleChatBoost(e.chat_boost);break;case(0,i.hasObjectProperty)(e,"chat_join_request"):r=this.handleChatJoinRequest(e.chat_join_request);break;case(0,i.hasObjectProperty)(e,"chat_member"):r=this.handleChatMember(e.chat_member);break;case(0,i.hasObjectProperty)(e,"chosen_inline_result"):r=this.handleChosenInlineResult(e.chosen_inline_result);break;case(0,i.hasObjectProperty)(e,"deleted_business_messages"):r=this.handleDeletedBusinessMessages(e.deleted_business_messages);break;case(0,i.hasObjectProperty)(e,"edited_business_message"):r=this.handleEditedBusinessMessage(e.edited_business_message);break;case(0,i.hasObjectProperty)(e,"edited_channel_post"):r=this.handleEditedChannelPost(e.edited_channel_post);break;case(0,i.hasObjectProperty)(e,"edited_message"):r=this.handleEditedMessage(e.edited_message);break;case(0,i.hasObjectProperty)(e,"inline_query"):r=this.handleInlineQuery(e.inline_query);break;case(0,i.hasObjectProperty)(e,"message_reaction"):r=this.handleMessageReaction(e.message_reaction);break;case(0,i.hasObjectProperty)(e,"message_reaction_count"):r=this.handleMessageReactionCount(e.message_reaction_count);break;case(0,i.hasObjectProperty)(e,"message.reply_to_message.text"):r=this.handleReplyToMessage(e.message);break;case(0,i.hasObjectProperty)(e,"message"):if(e.message?.text?.startsWith("/start")){r=this.handleStart(e.message);break}r=this.handleMessage(e.message);break;case(0,i.hasObjectProperty)(e,"my_chat_member"):r=this.handleMyChatMember(e.my_chat_member);break;case(0,i.hasObjectProperty)(e,"poll"):r=this.handlePoll(e.poll);break;case(0,i.hasObjectProperty)(e,"poll_answer"):r=this.handlePollAnswer(e.poll_answer);break;case(0,i.hasObjectProperty)(e,"pre_checkout_query"):r=this.handlePreCheckoutQuery(e.pre_checkout_query);break;case(0,i.hasObjectProperty)(e,"purchased_paid_media"):r=this.handlePurchasedPaidMedia(e.purchased_paid_media);break;case(0,i.hasObjectProperty)(e,"removed_chat_boost"):r=this.handleRemovedChatBoost(e.removed_chat_boost);break;case(0,i.hasObjectProperty)(e,"shipping_query"):r=this.handleShippingQuery(e.shipping_query);break;default:return c.error("Telegram","handle","Failed to handle the update.",e)}if(r)return c.info("Telegram","handle",`A ${r.type} update has been handled.`,e,r);c.warn("Telegram","handle","Failed to find the matching listener.",e)}handleBusinessConnection(e){let r;if(r=this.findListener("business_connection"),!!r)return r.middleware(e),r}handleBusinessMessage(e){let r;if(r=this.findListener("business_message"),!!r)return r.middleware(e),r}handleCallbackQuery(e){let r,n;if(n=O(e.data),(0,i.setObjectProperty)(e,"body",n),r=this.findListener("callback_query",n.m),!!r)return r.middleware(e),r.options.deleteOnCallbackQuery&&e.message&&k({chat_id:n.c?e.from.id:e.message.chat.id,message_id:e.message.message_id},{token:this.token}),r}handleChannelPost(e){let r;if(r=this.findListener("channel_post"),!!r)return r.middleware(e),r}handleChatBoost(e){let r;if(r=this.findListener("chat_boost"),!!r)return r.middleware(e),r}handleChatJoinRequest(e){let r;if(r=this.findListener("chat_join_request"),!!r)return r.middleware(e),r}handleChatMember(e){let r;if(r=this.findListener("chat_member"),!!r)return r.middleware(e),r}handleChosenInlineResult(e){let r;if(r=this.findListener("chosen_inline_result"),!!r)return r.middleware(e),r}handleDeletedBusinessMessages(e){let r;if(r=this.findListener("deleted_business_messages"),!!r)return r.middleware(e),r}handleEditedBusinessMessage(e){let r;if(r=this.findListener("edited_business_message"),!!r)return r.middleware(e),r}handleEditedChannelPost(e){let r;if(r=this.findListener("edited_channel_post"),!!r)return r.middleware(e),r}handleEditedMessage(e){let r;if(r=this.findListener("edited_message"),!!r)return r.middleware(e),r}handleInlineQuery(e){let r;if(r=this.findListener("inline_query"),!!r)return r.middleware(e),r}handleMessage(e){let r;if(r=this.findListener("message",x(e.text)),!!r)return r.middleware(e),r}handleMessageReaction(e){let r;if(r=this.findListener("message_reaction"),!!r)return r.middleware(e),r}handleMessageReactionCount(e){let r;if(r=this.findListener("message_reaction_count"),!!r)return r.middleware(e),r}handleMyChatMember(e){let r;if(r=this.findListener("my_chat_member"),!!r)return r.middleware(e),r}handlePoll(e){let r;if(r=this.findListener("poll"),!!r)return r.middleware(e),r}handlePollAnswer(e){let r;if(r=this.findListener("poll_answer"),!!r)return r.middleware(e),r}handlePreCheckoutQuery(e){let r;if(r=this.findListener("pre_checkout_query"),!!r)return r.middleware(e),r}handlePurchasedPaidMedia(e){let r;if(r=this.findListener("purchased_paid_media"),!!r)return r.middleware(e),r}handleRemovedChatBoost(e){let r;if(r=this.findListener("removed_chat_boost"),!!r)return r.middleware(e),r}handleReplyToMessage(e){let r,n;if(r=Q(e.reply_to_message?.entities??[]),(0,i.setObjectProperty)(e,"body",r),n=this.findListener("reply_to_message",r.m),!!n)return n.middleware(e),n.id.length>0&&n.options.deleteOnReply&&e.from&&e.reply_to_message&&U({chat_id:e.from.id,message_ids:[e.message_id,e.reply_to_message.message_id]},{token:this.token}),n}handleShippingQuery(e){let r;if(r=this.findListener("shipping_query"),!!r)return r.middleware(e),r}handleStart(e){let r,n;if(n=W(e.text),(0,i.setObjectProperty)(e,"body",n),r=this.findListener("start",n.m),!!r)return r.middleware(e),r.id.length>0&&r.options.deleteOnMessageStart&&k({chat_id:n.c?e.from?.id??0n:e.chat.id,message_id:e.message_id},{token:this.token}),r}async poll(e){let r,n;if(r={allowed_updates:e?.allowed_updates??u,limit:e?.limit,offset:e?.offset??this.offset,timeout:e?.timeout},n=await v(r,{token:this.token}),!(n instanceof Error)){for(let s of n)this.handle(s);this.offset=n.length>0?n[n.length-1].update_id+1:this.offset,c.verbose("Telegram","poll","The offset has been set.",[this.offset]),typeof e?.offset=="number"&&typeof this.offset=="number"&&(0,i.isIntervalSet)(this.id)&&((0,i.clearInterval)(this.id),(0,i.setInterval)(()=>this.poll({...e,offset:void 0}),e?.ms??P,this.id,{autorun:!0}))}}findListener(e,r){return this.listeners.find(n=>n.command===r&&n.type===e)}getCommands(){return this.listeners.filter(e=>typeof e.command=="string"&&e.type==="message").map(e=>({command:e.command??"",description:e.description??""}))}getListeners(){return this.listeners}getToken(){return this.token}setToken(e){return this.token=e,c.verbose("Telegram","setToken","The token has been set.",[this.token]),this}get listenerIDs(){return this.listeners.reduce((e,r)=>[...e,r.id],[])}};async function Ge(t,e){return o.post("addStickerToSet",{...t,sticker:{...t.sticker,sticker:t.sticker.sticker instanceof Blob?"attach://sticker_blob":t.sticker.sticker},...t.sticker.sticker instanceof Blob&&{sticker_blob:t.sticker.sticker}},e)}async function Ue(t,e){return o.post("answerCallbackQuery",t,e)}async function De(t,e){return o.post("answerInlineQuery",t,e)}async function ve(t,e){return o.post("answerPreCheckoutQuery",t,e)}async function Re(t,e){return o.post("answerShippingQuery",t,e)}async function we(t,e){return o.post("answerWebAppQuery",t,e)}async function Oe(t,e){return o.post("approveChatJoinRequest",t,e)}async function Ne(t,e){return o.post("banChatMember",t,e)}async function Qe(t,e){return o.post("banChatSenderChat",t,e)}async function Ve(t,e){return o.post("deleteBusinessMessages",t,e)}async function We(t,e){return o.post("getBusinessAccountGifts",t,e)}async function Ke(t,e){return o.post("getBusinessAccountStarBalance",t,e)}async function je(t,e){return o.post("getBusinessConnection",t,e)}async function qe(t,e){return o.post("readBusinessMessage",t,e)}async function Je(t,e){return o.post("removeBusinessAccountProfilePhoto",t,e)}async function He(t,e){return o.post("setBusinessAccountBio",t,e)}async function Ye(t,e){return o.post("setBusinessAccountGiftSettings",t,e)}async function $e(t,e){return o.post("setBusinessAccountName",t,e)}async function Xe(t,e){return o.post("setBusinessAccountProfilePhoto",{...t,photo:"animation"in t.photo&&t.photo.animation instanceof Blob?{...t.photo,animation:"attach://photo_blob"}:"photo"in t.photo&&t.photo.photo instanceof Blob?{...t.photo,photo:"attach://photo_blob"}:t.photo,..."animation"in t.photo&&t.photo.animation instanceof Blob?{photo_blob:t.photo.animation}:"photo"in t.photo&&t.photo.photo instanceof Blob?{photo_blob:t.photo.photo}:{}},e)}async function ze(t,e){return o.post("setBusinessAccountUsername",t,e)}async function Ze(t,e){return o.post("transferBusinessAccountStars",t,e)}async function et(t,e){return o.post("closeForumTopic",t,e)}async function tt(t,e){return o.post("closeGeneralForumTopic",t,e)}async function rt(t,e){return o.post("copyMessage",t,e)}async function ot(t,e){return o.post("copyMessages",t,e)}async function nt(t,e){return o.post("createChatInviteLink",t,e)}async function it(t,e){return o.post("createChatSubscriptionInviteLink",t,e)}async function st(t,e){return o.post("createForumTopic",t,e)}async function at(t,e){return o.post("createInvoiceLink",t,e)}async function ct(t,e){return o.post("createNewStickerSet",{...t,stickers:t.stickers.map((r,n)=>({...r,sticker:r.sticker instanceof Blob?`attach://sticker_${n}`:r.sticker})),...t.stickers.reduce((r,n,s)=>({...r,[`sticker_${s}`]:n.sticker}),{})},e)}async function mt(t,e){return o.post("declineChatJoinRequest",t,e)}async function re(t,e){let r,n;return r=await D({file_id:t},e),r instanceof Error?r:(n=await z.get(r.file_path??"",e),n instanceof Error,n)}async function lt(t,e){let r,n,s;return r=await R({limit:1,user_id:t},e),r instanceof Error?r:(n=r.photos,n.length<=0?new Error(JSON.stringify(r)):(s=await re(n[0].reduce((a,d)=>d.height+d.width>a.height+a.width?d:a,n[0][0]).file_id,e),s instanceof Error,s))}async function pt(t,e){return o.post("editChatInviteLink",t,e)}async function gt(t,e){return o.post("editChatSubscriptionInviteLink",t,e)}async function dt(t,e){return o.post("editForumTopic",t,e)}async function ut(t,e){return o.post("editGeneralForumTopic",t,e)}async function ft(t,e){return o.post("editMessageCaption",t,e)}async function ht(t,e){return o.post("editMessageLiveLocation",t,e)}async function Ct(t,e){return o.post("editMessageMedia",{...t,media:{...t.media,media:t.media.media instanceof Blob?"attach://media_blob":t.media.media},...t.media.media instanceof Blob?{media_blob:t.media.media}:{}},e)}async function Tt(t,e){return o.post("editMessageReplyMarkup",t,e)}async function yt(t,e){return o.post("editMessageText",t,e)}async function St(t,e){return o.post("editUserStarSubscription",t,e)}async function bt(t,e){return o.post("exportChatInviteLink",t,e)}async function Mt(t,e){return o.post("forwardMessage",t,e)}async function At(t,e){return o.post("forwardMessages",t,e)}async function Et(t,e){return o.post("convertGiftToStars",t,e)}async function Pt(t){return o.post("getAvailableGifts",void 0,t)}async function kt(t,e){return o.post("giftPremiumSubscription",t,e)}async function Ft(t,e){return o.post("sendGift",t,e)}async function xt(t,e){return o.post("transferGift",t,e)}async function Bt(t,e){return o.post("upgradeGift",t,e)}async function Lt(t,e){return o.post("hideGeneralForumTopic",t,e)}async function _t(t,e){return o.post("leaveChat",t,e)}async function It(t){return o.post("logOut",void 0,t)}async function Gt(t,e){return o.post("pinChatMessage",t,e)}async function Ut(t,e){return o.post("promoteChatMember",t,e)}async function Dt(t,e){return o.post("refundStarPayment",t,e)}async function vt(t,e){return o.post("reopenForumTopic",t,e)}async function Rt(t,e){return o.post("reopenGeneralForumTopic",t,e)}async function wt(t,e){return o.post("replaceStickerInSet",{...t,sticker:{...t.sticker,sticker:t.sticker.sticker instanceof Blob?"attach://sticker_blob":t.sticker.sticker},...t.sticker.sticker instanceof Blob&&{sticker_blob:t.sticker.sticker}},e)}async function Ot(t,e){return o.post("restrictChatMember",t,e)}async function Nt(t,e){return o.post("revokeChatInviteLink",t,e)}async function Qt(t,e){return o.post("savePreparedInlineMessage",t,e)}var Wt=require("@aracna/core"),Vt=["b","strong","i","em","u","ins","s","strike","del","span","tg-spoiler","a","code","pre","/",'"'];function Kt(t,e=0,r=100,n=20){let s,a;return s=(0,Wt.getNumberPercentage)(t,{min:e,max:r}),a=new Array(n).fill(0).map((d,A)=>A*r/n<s?"=":" "),`<code>[${a.join("")}]</code>`}function q(t){return t.replace(/&/gm,"&").replace(new RegExp(`<(?!(${Vt.join("|")}))`,"gm"),"<").replace(new RegExp(`(?<!(${Vt.join("|")}))>`,"gm"),">")}async function jt(t,e){return o.post("sendAnimation",t,e)}async function qt(t,e){return o.post("sendAudio",t,e)}async function Jt(t,e){return o.post("sendDocument",t,e)}async function Ht(t,e){return o.post("sendChatAction",t,e)}async function Yt(t,e){return o.post("sendContact",t,e)}async function $t(t,e){return o.post("sendDice",t,e)}async function Xt(t,e){return o.post("sendGame",t,e)}async function zt(t,e){return o.post("sendInvoice",t,e)}async function Zt(t,e){return o.post("sendLocation",t,e)}async function er(t,e){return o.post("sendMediaGroup",{...t,media:t.media.map((r,n)=>({...r,media:`attach://media_${n}`})),...t.media.reduce((r,n,s)=>({...r,[`media_${s}`]:n.media}),{})},e)}async function J(t,e){return o.post("sendMessage",t,e)}async function tr(t,e){return J({parse_mode:"HTML",...t,text:q(t.text)},e)}async function rr(t,e){return o.post("sendPaidMedia",{...t,media:t.media.map((r,n)=>({...r,media:`attach://media_${n}`})),...t.media.reduce((r,n,s)=>({...r,[`media_${s}`]:n.media}),{})},e)}async function or(t,e){return o.post("sendPhoto",t,e)}async function nr(t,e){return o.post("sendPoll",t,e)}async function ir(t,e){return J({parse_mode:"HTML",reply_markup:{force_reply:!0,selective:!0},...t,text:t.text+V({chatID:t.from_chat_id,command:t.command,data:t.data})},e)}async function sr(t,e){return o.post("sendSticker",t,e)}async function ar(t,e){return o.post("sendVenue",t,e)}async function cr(t,e){return o.post("sendVideo",{...t,cover:t.cover instanceof Blob?"attach://cover_blob":t.cover,...t.cover instanceof Blob?{cover_blob:t.cover}:{}},e)}async function mr(t,e){return o.post("sendVideoNote",t,e)}async function lr(t,e){return o.post("sendVoice",t,e)}async function pr(t,e){return o.post("setChatAdministratorCustomTitle",t,e)}async function gr(t,e){return o.post("setChatDescription",t,e)}async function dr(t,e){return o.post("setChatMenuButton",t,e)}async function ur(t,e){return o.post("setChatPermissions",t,e)}async function fr(t,e){return o.post("setChatPhoto",{...t,photo:t.photo instanceof Blob?"attach://photo_blob":t.photo,...t.photo instanceof Blob?{photo_blob:t.photo}:{}},e)}async function hr(t,e){return o.post("setChatStickerSet",t,e)}async function Cr(t,e){return o.post("setChatTitle",t,e)}async function Tr(t,e){return o.post("setCustomEmojiStickerSetThumbnail",t,e)}async function yr(t,e){return o.post("setGameScore",t,e)}async function Sr(t,e){return o.post("setMessageReaction",t,e)}async function br(t,e){return o.post("setMyCommands",t,e)}async function Mr(t,e){return o.post("setMyDefaultAdministratorRights",t,e)}async function Ar(t,e){return o.post("setMyDescription",t,e)}async function Er(t,e){return o.post("setMyName",t,e)}async function Pr(t,e){return o.post("setMyShortDescription",t,e)}async function kr(t,e){return o.post("setPassportDataErrors",t,e)}async function Fr(t,e){return o.post("setStickerEmojiList",t,e)}async function xr(t,e){return o.post("setStickerKeywords",t,e)}async function Br(t,e){return o.post("setStickerMaskPosition",t,e)}async function Lr(t,e){return o.post("setStickerPositionInSet",t,e)}async function _r(t,e){return o.post("setStickerSetThumbnail",t,e)}async function Ir(t,e){return o.post("setStickerSetTitle",t,e)}async function Gr(t,e){return o.post("setUserEmojiStatus",t,e)}async function Ur(t,e){return o.post("stopMessageLiveLocation",t,e)}async function Dr(t,e){return o.post("stopPoll",t,e)}async function vr(t,e){return o.post("deleteStory",t,e)}async function Rr(t,e){return o.post("editStory",t,e)}async function wr(t,e){return o.post("postStory",t,e)}async function Or(t,e){return o.post("unbanChatMember",t,e)}async function Nr(t,e){return o.post("unbanChatSenderChat",t,e)}async function Qr(t,e){return o.post("unhideGeneralForumTopic",t,e)}async function Vr(t,e){return o.post("unpinAllChatMessages",t,e)}async function Wr(t,e){return o.post("unpinAllForumTopicMessages",t,e)}async function Kr(t,e){return o.post("unpinAllGeneralForumTopicMessages",t,e)}async function jr(t,e){return o.post("unpinChatMessage",t,e)}async function qr(t,e){return o.post("uploadStickerFile",t,e)}async function Jr(t,e){return o.post("removeChatVerification",t,e)}async function Hr(t,e){return o.post("removeUserVerification",t,e)}async function Yr(t,e){return o.post("verifyChat",t,e)}async function $r(t,e){return o.post("verifyUser",t,e)}var f=require("@aracna/core");function H(t){if((0,f.hasObjectProperty)(t,"chat"))return(0,f.getObjectProperty)(t,"chat");if((0,f.hasObjectProperty)(t,"message.chat"))return(0,f.getObjectProperty)(t,"message.chat")}function Xr(t){return H(t)?.id}function zr(t){return H(t)?.type}function M(t){if((0,f.hasObjectProperty)(t,"from"))return(0,f.getObjectProperty)(t,"from")}function Zr(t){return M(t)?.first_name}function eo(t){return M(t)?.id}function to(t){return M(t)?.last_name}function ro(t){return M(t)?.username}function oo(t,e){return{text:t,callback_data:N(e)}}function no(t,e){return{text:t,callback_game:e}}function io(t,e,r){return{text:t,login_url:{url:e,...r}}}function so(t){return{text:t,pay:!0}}function ao(t,e){return{text:t,switch_inline_query:e}}function co(t,e){return{text:t,switch_inline_query_chosen_chat:e}}function mo(t,e){return{text:t,switch_inline_query_current_chat:e}}function lo(t){return{text:t}}function po(t,e){return{text:t,url:e}}function go(t,e){return{text:t,web_app:e}}
|
package/package.json
CHANGED
|
@@ -1,45 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"author": "Dario Sechi",
|
|
3
|
-
"devDependencies": {
|
|
4
|
-
"@aracna/core": "^1.3.1",
|
|
5
|
-
"@aracna/telegram-bot-types": "^1.2.17",
|
|
6
|
-
"@fastify/multipart": "^9.0.3",
|
|
7
|
-
"@microsoft/api-extractor": "^7.52.8",
|
|
8
|
-
"@ngrok/ngrok": "^1.5.1",
|
|
9
|
-
"@types/node": "^24.0.0",
|
|
10
|
-
"@vitest/coverage-v8": "^3.2.3",
|
|
11
|
-
"@vitest/ui": "^3.2.3",
|
|
12
|
-
"dotenv": "^16.5.0",
|
|
13
|
-
"fastify": "^5.3.3",
|
|
14
|
-
"sharp": "^0.34.2",
|
|
15
|
-
"typescript": "^5.8.3",
|
|
16
|
-
"vitest": "^3.2.3"
|
|
17
|
-
},
|
|
18
|
-
"engines": {
|
|
19
|
-
"node": ">=18",
|
|
20
|
-
"pnpm": ">=10"
|
|
21
|
-
},
|
|
22
3
|
"exports": {
|
|
23
4
|
"types": "./index.d.ts",
|
|
24
5
|
"import": "./index.js",
|
|
25
|
-
"require": "./index.
|
|
6
|
+
"require": "./index.cjs"
|
|
26
7
|
},
|
|
27
8
|
"license": "MIT",
|
|
28
|
-
"main": "index.
|
|
9
|
+
"main": "index.cjs",
|
|
10
|
+
"module": "index.js",
|
|
29
11
|
"name": "@aracna/telegram-bot",
|
|
30
12
|
"peerDependencies": {
|
|
31
|
-
"@aracna/core": ">= 1.
|
|
13
|
+
"@aracna/core": ">= 1.4.0",
|
|
32
14
|
"@aracna/telegram-bot-types": ">= 1.2.0"
|
|
33
15
|
},
|
|
34
|
-
"publishConfig": {
|
|
35
|
-
"directory": "dist"
|
|
36
|
-
},
|
|
37
16
|
"repository": "https://github.com/queelag/telegram-bot",
|
|
17
|
+
"type": "module",
|
|
38
18
|
"types": "index.d.ts",
|
|
39
|
-
"version": "2.0.
|
|
40
|
-
"scripts": {
|
|
41
|
-
"build": "node scripts/build.mjs && pnpm tsc && pnpm api-extractor run --local",
|
|
42
|
-
"prepublish": "pnpm test && pnpm build && node scripts/pre-publish.mjs",
|
|
43
|
-
"test": "vitest run"
|
|
44
|
-
}
|
|
19
|
+
"version": "2.0.9"
|
|
45
20
|
}
|