├── .gitignore ├── note.md ├── tsconfig.json ├── package.json ├── LICENSE ├── README.md ├── tgbot.d.ts.map ├── tgbot.d.ts ├── test └── unit_test.js ├── tgbot.ts └── tgbot.js.map /.gitignore: -------------------------------------------------------------------------------- 1 | note 2 | test_note 3 | -------------------------------------------------------------------------------- /note.md: -------------------------------------------------------------------------------- 1 | 這裡的 tgbot.js 是經由 clasp 的 ts2gas 轉的 2 | 然後再生 tgbot.js.map 3 | 4 | ` tsc --allowJs --outFile .\tgbot2.js --sourceMap .\tgbot.js ` 5 | 6 | ` rm -rf ./tgbot.js.map ` 7 | 8 | ` mv ./tgbot2.js.map ./tgbot.js.map ` 9 | 10 | ` rm ./tgbot2.js ` 11 | 12 | ---- 13 | 14 | ` npm publish ` 15 | 16 | ` tsc ` 17 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2019", 4 | "module": "commonjs", 5 | "strict": true, 6 | "esModuleInterop": true, 7 | "declaration": true, 8 | "sourceMap":true, 9 | "declarationMap":true, 10 | }, 11 | "exclude":["./test_note"] 12 | } 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "google-apps-script-telegram-bot-library", 3 | "version": "1.1.3", 4 | "description": "you can use this library to develop your tgbot on google apps script", 5 | "main": "tgbot.js", 6 | "types": "tgbot.d.ts", 7 | "directories": { 8 | "test": "test" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/we684123/Google-Apps-Script-Telegram-Bot-Library.git" 16 | }, 17 | "keywords": [ 18 | "telegram", 19 | "bot", 20 | "google", 21 | "apps", 22 | "script", 23 | "library" 24 | ], 25 | "author": "we684123", 26 | "license": "MIT", 27 | "bugs": { 28 | "url": "https://github.com/we684123/Google-Apps-Script-Telegram-Bot-Library/issues" 29 | }, 30 | "homepage": "https://github.com/we684123/Google-Apps-Script-Telegram-Bot-Library#readme", 31 | "dependencies":{ 32 | "xmlhttprequest":">=1.8.0" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 永格天 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. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Google Apps Script Telegram Bot Library 2 | 3 | 一個 TGbot lib 4 | 讓你可以在 Google Apps Script 上輕鬆寫 Telegram bot 5 | 或者你也可以 npm install 後在 local 端開發 6 | 7 | 這個 library 是照著 [官方 bot api 刻出來的](https://core.telegram.org/bots/api) 8 | this library is follow [official telegam bot api](https://core.telegram.org/bots/api) 9 | 10 | 你可以在該網站找到所有這個 library 所支援的 methods 11 | you can find all availability methods from this library in web 12 | 13 | ℹ目前配合的 api 版本: v4.9 14 | ℹavailability version: v4.9 15 | 16 | ![Imgur](https://imgur.com/iP46IBt.gif) 17 | ![Imgur](https://imgur.com/5f4jlmG.gif) 18 | 19 | ## npm install 20 | 21 | `npm i google-apps-script-telegram-bot-library` 22 | 23 | ## Google Apps Script Library install 24 | 25 | 打開 gs 編輯頁面 26 | -> "資源" 27 | -> "程式庫" 28 | -> 將 `1XyHWbpiDtyHFEcZ0AOlsJp8DL99ax2R9HvehtjYg3vlLK4DDbiPyZ9eI` 貼上輸入框 29 | -> "新增" 30 | -> 選擇最後版本(記得阿 不然儲存不了) 31 | -> "儲存"~ 32 | 33 | Open Script Editor. 34 | -> Resource 35 | -> Library 36 | -> Paste Script ID `1XyHWbpiDtyHFEcZ0AOlsJp8DL99ax2R9HvehtjYg3vlLK4DDbiPyZ9eI` to box 37 | -> Add library 38 | -> select lastest version and save 39 | 40 | ## Run on NodeJs 41 | 42 | ```javascript 43 | const tgbot = require("google-apps-script-telegram-bot-library"); 44 | var bot = new tgbot.tgbot(""); 45 | var result = bot.sendMessage({ chat_id: "123", text: "030//" }); 46 | console.log(result); 47 | ``` 48 | 49 | ## Run on TypeScript 50 | 51 | ```typescript 52 | import { tgbot } from "google-apps-script-telegram-bot-library"; 53 | var bot = new tgbot(""); 54 | var result = bot.sendMessage({ chat_id: "123", text: "030//" }); 55 | console.log(result); 56 | ``` 57 | 58 | ## Run on Google Apps Script 59 | 60 | ```javascript 61 | var tgbot = new TGbot.tgbot(""); 62 | var result = tgbot.sendMessage({ chat_id: "123", text: "030//" }); 63 | console.log(result); 64 | ``` 65 | 66 | --- 67 | 68 | ## Unit test 69 | 70 | 所有 method 皆測試過可用,除了以下名單沒測 71 | 72 | ### 未測試名單(not use unit test) 73 | 74 | | 名稱 name | 原因 reason | 75 | | :-----------------------------------------------------------------------: | :-----------------: | 76 | | setChatStickerSet | 因為人數未達 100 人 | 77 | | deleteChatStickerSet | 因為人數未達 100 人 | 78 | | [Telegram Passport](https://core.telegram.org/bots/api#telegram-passport) | 作者不知道原理:( | 79 | | [Games](https://core.telegram.org/bots/api#games) | 作者不會寫遊戲:( | 80 | 81 | ## Methods 82 | 83 | ## Additional method 84 | 85 | 這個 library 還有一些特有的 method 可以用 86 | 87 | ### getPath 88 | 89 | 獲取檔案的下載路徑 90 | 91 | | Parameters | type | Required | Description | 92 | | :--------: | :----: | :------: | :-------------------------------: | 93 | | file_id | string | Yes | File identifier to get info about | 94 | 95 | ### getFileDownloadUrl 96 | 97 | 獲取檔案的下載連結 98 | 99 | | Parameters | type | Required | Description | 100 | | :--------: | :----: | :------: | :---------------------------: | 101 | | Path | string | Yes | [getPath](#getPath)回傳的結果 | 102 | -------------------------------------------------------------------------------- /tgbot.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"tgbot.d.ts","sourceRoot":"","sources":["tgbot.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /tgbot.d.ts: -------------------------------------------------------------------------------- 1 | /** Telegram bot class */ 2 | export declare class tgbot { 3 | token: string; 4 | api_url: string; 5 | /** 6 | * @param {string} token - The bot token 7 | */ 8 | constructor(token: string); 9 | /** 10 | * @param {object} options 11 | * @param {number} options.offset - offset 12 | * @param {number} options.limit - limit 13 | * @param {number} options.timeout - timeout 14 | * @param {string[]} options.allowed_updates - allowed_updates 15 | */ 16 | getUpdates({ offset, limit, timeout, allowed_updates }?: { 17 | offset?: number | string; 18 | limit?: number; 19 | timeout?: number; 20 | allowed_updates?: string | string[]; 21 | }): any; 22 | setWebhook({ url, certificate, max_connections, allowed_updates }?: { 23 | url: string; 24 | certificate?: any; 25 | max_connections?: number; 26 | allowed_updates?: string[]; 27 | }): any; 28 | deleteWebhook(): any; 29 | getWebhookInfo(): any; 30 | getMe(): any; 31 | sendMessage({ chat_id, text, parse_mode, disable_web_page_preview, disable_notification, reply_to_message_id, reply_markup, }?: { 32 | chat_id: string | number; 33 | text: string; 34 | parse_mode?: string | undefined; 35 | disable_web_page_preview?: Boolean | undefined; 36 | disable_notification?: Boolean | undefined; 37 | reply_to_message_id?: string | number | undefined; 38 | reply_markup?: any | undefined; 39 | }): any; 40 | forwardMessage({ chat_id, from_chat_id, disable_notification, message_id }?: { 41 | chat_id: string | number; 42 | from_chat_id: string | number; 43 | disable_notification?: boolean; 44 | message_id: string | number; 45 | }): any; 46 | sendPhoto({ chat_id, photo, caption, parse_mode, disable_notification, reply_to_message_id, reply_markup }?: { 47 | chat_id: string | number; 48 | photo: any; 49 | caption?: string; 50 | parse_mode?: string; 51 | disable_notification?: boolean; 52 | reply_to_message_id?: string | number; 53 | reply_markup?: any; 54 | }): any; 55 | sendAudio({ chat_id, audio, caption, parse_mode, duration, performer, title, thumb, disable_notification, reply_to_message_id, reply_markup }?: { 56 | chat_id: string | number; 57 | audio: any; 58 | caption?: string; 59 | parse_mode?: string; 60 | duration?: number | string; 61 | performer?: string; 62 | title?: string; 63 | thumb?: any; 64 | disable_notification?: boolean; 65 | reply_to_message_id?: string | number; 66 | reply_markup?: any; 67 | }): any; 68 | sendDocument({ chat_id, document, thumb, caption, parse_mode, disable_notification, reply_to_message_id, reply_markup }?: { 69 | chat_id: number | string; 70 | document: any; 71 | thumb?: any; 72 | caption?: string; 73 | parse_mode?: string; 74 | disable_notification?: boolean; 75 | reply_to_message_id?: number | string; 76 | reply_markup?: any; 77 | }): any; 78 | sendVideo({ chat_id, video, duration, width, height, thumb, caption, parse_mode, supports_streaming, disable_notification, reply_to_message_id, reply_markup }?: { 79 | chat_id: number | string; 80 | video: any; 81 | duration?: number | string; 82 | width?: number | string; 83 | height?: number | string; 84 | thumb?: any; 85 | caption?: string; 86 | parse_mode?: string; 87 | supports_streaming?: boolean; 88 | disable_notification?: boolean; 89 | reply_to_message_id?: number | string; 90 | reply_markup?: any; 91 | }): any; 92 | sendAnimation({ chat_id, animation, duration, width, height, thumb, caption, parse_mode, disable_notification, reply_to_message_id, reply_markup }?: { 93 | chat_id: number | string; 94 | animation: any; 95 | duration?: number | string; 96 | width?: number | string; 97 | height?: number | string; 98 | thumb?: any; 99 | caption?: string; 100 | parse_mode?: string; 101 | disable_notification?: boolean; 102 | reply_to_message_id?: number | string; 103 | reply_markup?: any; 104 | }): any; 105 | sendVoice({ chat_id, voice, duration, caption, parse_mode, disable_notification, reply_to_message_id, reply_markup }?: { 106 | chat_id: number | string; 107 | voice: any; 108 | duration?: number | string; 109 | caption?: string; 110 | parse_mode?: string; 111 | disable_notification?: boolean; 112 | reply_to_message_id?: number | string; 113 | reply_markup?: any; 114 | }): any; 115 | sendVideoNote({ chat_id, video_note, duration, length, thumb, disable_notification, reply_to_message_id, reply_markup }?: { 116 | chat_id: number | string; 117 | video_note: any; 118 | duration?: number | string; 119 | length?: string; 120 | thumb?: any; 121 | disable_notification?: boolean; 122 | reply_to_message_id?: number | string; 123 | reply_markup?: any; 124 | }): any; 125 | sendMediaGroup({ chat_id, media, disable_notification, reply_to_message_id, }?: { 126 | chat_id: number | string; 127 | media: any[]; 128 | disable_notification?: boolean; 129 | reply_to_message_id?: number | string; 130 | }): any; 131 | sendLocation({ chat_id, latitude, longitude, live_period, disable_notification, reply_to_message_id, reply_markup }?: { 132 | chat_id: number | string; 133 | latitude: number | string; 134 | longitude: number | string; 135 | live_period?: number | null; 136 | disable_notification?: boolean; 137 | reply_to_message_id?: number | string; 138 | reply_markup?: any; 139 | }): any; 140 | editMessageLiveLocation({ chat_id, message_id, inline_message_id, latitude, longitude, reply_markup }?: { 141 | chat_id?: number | string; 142 | message_id?: number | null; 143 | inline_message_id?: string; 144 | latitude: number | null; 145 | longitude: number | null; 146 | reply_markup?: any; 147 | }): any; 148 | stopMessageLiveLocation({ chat_id, message_id, inline_message_id, reply_markup }?: { 149 | chat_id?: number | string; 150 | message_id?: number | null; 151 | inline_message_id?: string; 152 | reply_markup?: any; 153 | }): any; 154 | sendVenue({ chat_id, latitude, longitude, title, address, foursquare_id, foursquare_type, disable_notification, reply_to_message_id, reply_markup }?: { 155 | chat_id: number | string; 156 | latitude: number | null; 157 | longitude: number | null; 158 | title: string; 159 | address: string; 160 | foursquare_id?: string; 161 | foursquare_type?: string; 162 | disable_notification?: boolean; 163 | reply_to_message_id?: number | string; 164 | reply_markup?: any; 165 | }): any; 166 | sendContact({ chat_id, phone_number, first_name, last_name, vcard, disable_notification, reply_to_message_id, reply_markup }?: { 167 | chat_id: number | string; 168 | phone_number: string; 169 | first_name: string; 170 | last_name?: string; 171 | vcard?: string; 172 | disable_notification?: boolean; 173 | reply_to_message_id?: number | string; 174 | reply_markup?: any; 175 | }): any; 176 | sendPoll({ chat_id, question, options, is_anonymous, type, allows_multiple_answers, correct_option_id, explanation, explanation_parse_mode, open_period, close_date, is_closed, disable_notification, reply_to_message_id, reply_markup }?: { 177 | chat_id: number | string; 178 | question: string; 179 | options: string[]; 180 | is_anonymous?: boolean; 181 | type?: string; 182 | allows_multiple_answers?: boolean; 183 | correct_option_id?: number | null; 184 | explanation?: string; 185 | explanation_parse_mode?: string; 186 | open_period?: number | null; 187 | close_date?: number | null; 188 | is_closed?: boolean; 189 | disable_notification?: boolean; 190 | reply_to_message_id?: number | string; 191 | reply_markup?: any; 192 | }): any; 193 | sendDice({ chat_id, emoji, disable_notification, reply_to_message_id, reply_markup }?: { 194 | chat_id: number | string; 195 | emoji?: string; 196 | disable_notification?: boolean; 197 | reply_to_message_id?: number | string; 198 | reply_markup?: any; 199 | }): any; 200 | sendChatAction({ chat_id, action, }?: { 201 | chat_id: number | string; 202 | action: string; 203 | }): any; 204 | getUserProfilePhotos({ user_id, offset, limit, }?: { 205 | user_id: string | number; 206 | offset?: number | null; 207 | limit?: number; 208 | }): any; 209 | getFile({ file_id, }?: { 210 | file_id: string; 211 | }): any; 212 | kickChatMember({ chat_id, user_id, until_date }?: { 213 | chat_id: number | string; 214 | user_id: string; 215 | until_date?: number | null; 216 | }): any; 217 | unbanChatMember({ chat_id, user_id, }?: { 218 | chat_id: number | string; 219 | user_id: string; 220 | }): any; 221 | restrictChatMember({ chat_id, user_id, permissions, until_date }?: { 222 | chat_id: number | string; 223 | user_id: number | string; 224 | permissions: object; 225 | until_date?: number | null; 226 | }): any; 227 | promoteChatMember({ chat_id, user_id, can_change_info, can_post_messages, can_edit_messages, can_delete_messages, can_invite_users, can_restrict_members, can_pin_messages, can_promote_members, }?: { 228 | chat_id: number | string; 229 | user_id: number | string; 230 | can_change_info?: boolean | null; 231 | can_post_messages?: boolean | null; 232 | can_edit_messages?: boolean | null; 233 | can_delete_messages?: boolean | null; 234 | can_invite_users?: boolean | null; 235 | can_restrict_members?: boolean | null; 236 | can_pin_messages?: boolean | null; 237 | can_promote_members?: boolean | null; 238 | }): any; 239 | setChatAdministratorCustomTitle({ chat_id, user_id, custom_title, }?: { 240 | chat_id: number | string; 241 | user_id: number | string; 242 | custom_title: string; 243 | }): any; 244 | setChatPermissions({ chat_id, permissions, }?: { 245 | chat_id: number | string; 246 | permissions: object; 247 | }): any; 248 | exportChatInviteLink({ chat_id, }?: { 249 | chat_id: number | string; 250 | }): any; 251 | setChatPhoto({ chat_id, photo, }?: { 252 | chat_id: number | string; 253 | photo: any; 254 | }): any; 255 | deleteChatPhoto({ chat_id, }?: { 256 | chat_id: number | string; 257 | }): any; 258 | setChatTitle({ chat_id, title, }?: { 259 | chat_id: number | string; 260 | title: string; 261 | }): any; 262 | setChatDescription({ chat_id, description, }?: { 263 | chat_id: number | string; 264 | description?: string; 265 | }): any; 266 | pinChatMessage({ chat_id, message_id, disable_notification, }?: { 267 | chat_id: number | string; 268 | message_id: number | null; 269 | disable_notification?: boolean; 270 | }): any; 271 | unpinChatMessage({ chat_id, }?: { 272 | chat_id: number | string; 273 | }): any; 274 | leaveChat({ chat_id, }?: { 275 | chat_id: number | string; 276 | }): any; 277 | getChat({ chat_id, }?: { 278 | chat_id: number | string; 279 | }): any; 280 | getChatAdministrators({ chat_id, }?: { 281 | chat_id: number | string; 282 | }): any; 283 | getChatMembersCount({ chat_id, }?: { 284 | chat_id: number | string; 285 | }): any; 286 | getChatMember({ chat_id, user_id, }?: { 287 | chat_id: number | string; 288 | user_id: number | string; 289 | }): any; 290 | setChatStickerSet({ chat_id, sticker_set_name, }?: { 291 | chat_id: number | string; 292 | sticker_set_name: string; 293 | }): any; 294 | deleteChatStickerSet({ chat_id, }?: { 295 | chat_id: number | string; 296 | }): any; 297 | answerCallbackQuery({ callback_query_id, text, show_alert, url, cache_time, }?: { 298 | callback_query_id?: string; 299 | text?: string; 300 | show_alert?: boolean; 301 | url?: string; 302 | cache_time?: number | null; 303 | }): any; 304 | setMyCommands({ commands, }?: { 305 | commands: object[]; 306 | }): any; 307 | getMyCommands(): any; 308 | editMessageText({ chat_id, message_id, inline_message_id, text, parse_mode, disable_web_page_preview, reply_markup }?: { 309 | chat_id?: number | string; 310 | message_id?: number | null; 311 | inline_message_id?: string; 312 | text: string; 313 | parse_mode?: string; 314 | disable_web_page_preview?: boolean; 315 | reply_markup?: any; 316 | }): any; 317 | editMessageCaption({ chat_id, message_id, inline_message_id, caption, parse_mode, disable_web_page_preview, reply_markup }?: { 318 | chat_id?: number | string; 319 | message_id?: number | null; 320 | inline_message_id?: string; 321 | caption?: string; 322 | parse_mode?: string; 323 | disable_web_page_preview?: boolean; 324 | reply_markup?: any; 325 | }): any; 326 | editMessageMedia({ chat_id, message_id, inline_message_id, media, reply_markup }?: { 327 | chat_id?: number | string; 328 | message_id?: number | null; 329 | inline_message_id?: string; 330 | media: object; 331 | reply_markup?: any; 332 | }): any; 333 | editMessageReplyMarkup({ chat_id, message_id, inline_message_id, reply_markup }?: { 334 | chat_id?: number | string; 335 | message_id?: number | null; 336 | inline_message_id?: string; 337 | reply_markup?: any; 338 | }): any; 339 | stopPoll({ chat_id, message_id, reply_markup }?: { 340 | chat_id: number | string; 341 | message_id: number | null; 342 | reply_markup?: any; 343 | }): any; 344 | deleteMessage({ chat_id, message_id, }?: { 345 | chat_id: number | string; 346 | message_id?: number | null; 347 | }): any; 348 | sendSticker({ chat_id, sticker, disable_notification, reply_to_message_id, reply_markup, }?: { 349 | chat_id: number | string; 350 | sticker: any; 351 | disable_notification?: boolean; 352 | reply_to_message_id?: number | string; 353 | reply_markup?: any; 354 | }): any; 355 | getStickerSet({ name, }?: { 356 | name: string; 357 | }): any; 358 | uploadStickerFile({ user_id, png_sticker, }?: { 359 | user_id: number | null; 360 | png_sticker: any; 361 | }): any; 362 | createNewStickerSet({ user_id, //這個要數字的id 363 | name, title, png_sticker, tgs_sticker, emojis, contains_masks, mask_position }?: { 364 | user_id: number | null; 365 | name: string; 366 | title: string; 367 | png_sticker?: any; 368 | tgs_sticker?: any; 369 | emojis: string; 370 | contains_masks?: boolean; 371 | mask_position?: object | null; 372 | }): any; 373 | addStickerToSet({ user_id, name, png_sticker, tgs_sticker, emojis, mask_position, }?: { 374 | user_id: number | null; 375 | name: string; 376 | png_sticker?: any; 377 | tgs_sticker?: any; 378 | emojis: string; 379 | mask_position?: object | null; 380 | }): any; 381 | setStickerPositionInSet({ sticker, position, }?: { 382 | sticker: string; 383 | position: number | null; 384 | }): any; 385 | deleteStickerFromSet({ sticker, }?: { 386 | sticker: string; 387 | }): any; 388 | setStickerSetThumb({ name, user_id, thumb, }?: { 389 | name: string; 390 | user_id: number | null; 391 | thumb?: any; 392 | }): any; 393 | answerInlineQuery({ inline_query_id, results, cache_time, is_personal, next_offset, switch_pm_text, switch_pm_parameter, }?: { 394 | inline_query_id: string; 395 | results: object[]; 396 | cache_time?: number | null; 397 | is_personal?: boolean; 398 | next_offset?: string; 399 | switch_pm_text?: string; 400 | switch_pm_parameter?: string; 401 | }): any; 402 | sendInvoice({ chat_id, title, description, payload, provider_token, start_parameter, currency, prices, provider_data, photo_url, photo_size, photo_width, photo_height, need_name, need_phone_number, need_email, need_shipping_address, send_phone_number_to_provider, send_email_to_provider, is_flexible, disable_notification, reply_to_message_id, reply_markup, }?: { 403 | chat_id: number | string; 404 | title: string; 405 | description: string; 406 | payload: string; 407 | provider_token: string; 408 | start_parameter: string; 409 | currency: string; 410 | prices: object[]; 411 | provider_data?: string; 412 | photo_url?: string; 413 | photo_size?: number | null; 414 | photo_width?: number | null; 415 | photo_height?: number | null; 416 | need_name?: boolean; 417 | need_phone_number?: boolean; 418 | need_email?: boolean; 419 | need_shipping_address?: boolean; 420 | send_phone_number_to_provider?: boolean; 421 | send_email_to_provider?: boolean; 422 | is_flexible?: boolean; 423 | disable_notification?: boolean; 424 | reply_to_message_id?: number | string; 425 | reply_markup?: any; 426 | }): any; 427 | answerShippingQuery({ shipping_query_id, ok, shipping_options, error_message, }?: { 428 | shipping_query_id: string; 429 | ok: boolean | null; 430 | shipping_options?: object[] | null; 431 | error_message?: string; 432 | }): any; 433 | answerPreCheckoutQuery({ pre_checkout_query_id, ok, error_message, }?: { 434 | pre_checkout_query_id: string; 435 | ok: boolean | null; 436 | error_message?: string; 437 | }): any; 438 | setPassportDataErrors({ user_id, errors, }?: { 439 | user_id: string; 440 | errors: object[] | null; 441 | }): any; 442 | sendGame({ chat_id, game_short_name, disable_notification, reply_to_message_id, reply_markup }?: { 443 | chat_id: string; 444 | game_short_name: string | null; 445 | disable_notification?: boolean; 446 | reply_to_message_id?: number | string; 447 | reply_markup?: any; 448 | }): any; 449 | setGameScore({ user_id, score, force, disable_edit_message, chat_id, message_id, inline_message_id, }?: { 450 | user_id: string; 451 | score: number | null; 452 | force?: null; 453 | disable_edit_message?: boolean | null; 454 | chat_id?: string | number; 455 | message_id?: string | number; 456 | inline_message_id?: string; 457 | }): any; 458 | getGameHighScores({ user_id, chat_id, message_id, inline_message_id, }?: { 459 | user_id: string; 460 | chat_id?: string | number; 461 | message_id?: string | number; 462 | inline_message_id?: string; 463 | }): any; 464 | getPath({ file_id, }?: { 465 | file_id: string; 466 | }): any; 467 | getFileDownloadUrl({ path }?: { 468 | path: any; 469 | }): string; 470 | private miss_parameter; 471 | private start; 472 | } 473 | //# sourceMappingURL=tgbot.d.ts.map -------------------------------------------------------------------------------- /test/unit_test.js: -------------------------------------------------------------------------------- 1 | function unit_test() { 2 | 3 | // @ts-ignore 4 | var logger = new BetterLogger.BetterLogger() 5 | var levels = logger.levels 6 | logger.set_level(levels.DEBUG) 7 | logger.set_sheet_id("1ADCWcQ3J7uXtRA8r5zRIz1qweAtfKD0E53eLGra66T8"); 8 | logger.set_sheet_page_name("test") 9 | logger.set_use_sheet(true); 10 | logger.info("'================='") 11 | 12 | var bot = new tgbot("909196871:AAHFdyF9E_LhvjjPePs6JhNHVtDU79unK4I") 13 | var i = 0 14 | 15 | var test_me_char_id = '207014603' 16 | var test_sg_char_id = '-1001097080770' 17 | var test_us_char_id = '808968740' 18 | 19 | i++; 20 | logger.info("i = " + i); 21 | try { 22 | logger.info("bot.deleteWebhook()") 23 | logger.info(bot.deleteWebhook()) 24 | } catch (error) { 25 | logger.error(error) 26 | } 27 | 28 | i++; 29 | logger.info("i = " + i); 30 | try { 31 | logger.info("bot.getUpdates()") 32 | logger.info(bot.getUpdates()) 33 | } catch (error) { 34 | logger.error(error) 35 | } 36 | 37 | i++; 38 | logger.info("i = " + i); 39 | try { 40 | logger.info("bot.setWebhook()") 41 | logger.info(bot.setWebhook({ 42 | "url": "https://script.google.com/macros/s/AKfycbw3DyTC9Oh3j3uNukl4V8SUIn4sN3zAz1PkLw6OKwRdfbs-BW0F/exec", 43 | "max_connections": 1 44 | })) 45 | } catch (error) { 46 | logger.error(error) 47 | } 48 | 49 | i++; 50 | logger.info("i = " + i); 51 | try { 52 | logger.info("bot.getWebhookInfo()") 53 | logger.info(bot.getWebhookInfo()) 54 | } catch (error) { 55 | logger.error(error) 56 | } 57 | 58 | i++; 59 | logger.info("i = " + i); 60 | try { 61 | logger.info("bot.getMe()") 62 | logger.info(bot.getMe()) 63 | } catch (error) { 64 | logger.error(error) 65 | } 66 | 67 | i++; 68 | logger.info("i = " + i); 69 | try { 70 | logger.info("bot.sendMessage()") 71 | logger.info(bot.sendMessage({ 72 | "chat_id": '207014603', 73 | "text": "030//", 74 | })) 75 | } catch (error) { 76 | logger.error(error) 77 | } 78 | 79 | var ReplyKeyboardMarkup = { 80 | "keyboard": [ 81 | [{ 82 | "text": "O" 83 | }, { 84 | "text": "X" 85 | }] 86 | ], 87 | "resize_keyboard": true, 88 | "one_time_keyboard": true 89 | } 90 | 91 | 92 | i++; 93 | logger.info("i = " + i); 94 | try { 95 | logger.info("bot.sendMessage()") 96 | logger.info(bot.sendMessage({ 97 | "chat_id": '207014603', 98 | "text": "[030//](google.com)", 99 | "parse_mode": "MarkdownV2", 100 | "disable_web_page_preview": true, 101 | "disable_notification": true, 102 | "reply_to_message_id": 1, 103 | "reply_markup": ReplyKeyboardMarkup 104 | })) 105 | } catch (error) { 106 | logger.error(error) 107 | } 108 | 109 | i++; 110 | logger.info("i = " + i); 111 | try { 112 | logger.info("bot.forwardMessage()") 113 | logger.info(bot.forwardMessage({ 114 | "chat_id": '207014603', 115 | "from_chat_id": "-1001097080770", 116 | "disable_notification": true, 117 | "message_id": 326, 118 | })) 119 | } catch (error) { 120 | logger.error(error) 121 | } 122 | 123 | i++; 124 | logger.info("i = " + i); 125 | try { 126 | logger.info("bot.sendPhoto()") 127 | logger.info(bot.sendPhoto({ 128 | "chat_id": '207014603', 129 | "photo": "https://imgur.com/B5744GN.png", 130 | 'caption': "botsendPhoto\n**空閒**", 131 | 'parse_mode': "MarkdownV2", 132 | 'disable_notification': true, 133 | 'reply_to_message_id': Number(30), 134 | 'reply_markup': ReplyKeyboardMarkup 135 | })) 136 | } catch (error) { 137 | logger.error(error) 138 | } 139 | 140 | var file_id = "16hmGxPccBoKICeKKSk1pHqdOz7kvC9rf" 141 | i++; 142 | logger.info("i = " + i); 143 | try { 144 | logger.info("bot.sendAudio()") 145 | logger.info(bot.sendAudio({ 146 | "chat_id": '207014603', 147 | "audio": DriveApp.getFileById(file_id).getBlob(), 148 | 'caption': "botsendPhoto\n**敲敲敲**", 149 | 'duration': Number(5), 150 | 'performer': String("WE"), 151 | 'parse_mode': "MarkdownV2", 152 | 'disable_notification': true, 153 | 'reply_to_message_id': Number(45), 154 | 'reply_markup': ReplyKeyboardMarkup 155 | })) 156 | } catch (error) { 157 | logger.error(error) 158 | } 159 | 160 | var file_id1 = "1vEetP-UezN79UXRhbtI78ldqTZv8ziJ1" 161 | var file_id2 = "1Y02FXMKdFD1IpZGg5RgSNlLLWQjNc6d_" 162 | i++; 163 | logger.info("i = " + i); 164 | try { 165 | logger.info("bot.sendDocument()") 166 | logger.info(bot.sendDocument({ 167 | "chat_id": '207014603', 168 | "document": DriveApp.getFileById(file_id1).getBlob(), 169 | 'thumb': DriveApp.getFileById(file_id2).getBlob(), 170 | 'caption': "sendDocument\n**文件**", 171 | 'duration': Number(5), 172 | 'performer': String("WE"), 173 | 'parse_mode': "MarkdownV2", 174 | 'disable_notification': true, 175 | 'reply_to_message_id': Number(45), 176 | 'reply_markup': ReplyKeyboardMarkup 177 | })) 178 | } catch (error) { 179 | logger.error(error) 180 | } 181 | 182 | var file_id1 = "1XNmIIbH-t-l0S-dFLHiCrTRBUnHpkREH" 183 | i++; 184 | logger.info("i = " + i); 185 | try { 186 | logger.info("bot.sendVideo()") 187 | logger.info(bot.sendVideo({ 188 | "chat_id": '207014603', 189 | "video": DriveApp.getFileById(file_id1).getBlob(), 190 | 'duration': Number(3), 191 | 'width': Number(1080), 192 | 'height': Number(1920), 193 | })) 194 | } catch (error) { 195 | logger.error(error) 196 | } 197 | 198 | i++; 199 | logger.info("i = " + i); 200 | try { 201 | logger.info("bot.sendAnimation()") 202 | logger.info(bot.sendAnimation({ 203 | "chat_id": '207014603', 204 | "animation": "https://media.giphy.com/media/S8MpS9WdQb98uHse9P/giphy.gif", 205 | })) 206 | } catch (error) { 207 | logger.error(error) 208 | } 209 | 210 | var file_id1 = "1XNmIIbH-t-l0S-dFLHiCrTRBUnHpkREH" 211 | i++; 212 | logger.info("i = " + i); 213 | try { 214 | logger.info("bot.sendVoice()") 215 | logger.info(bot.sendVoice({ 216 | "chat_id": '207014603', 217 | "voice": "AwACAgUAAxkBAANPXz0ZirFc3YhpQSkdls9ViGAZpXcAAjEBAAIW5-hV7eYfJXG125wbBA", 218 | })) 219 | } catch (error) { 220 | logger.error(error) 221 | } 222 | 223 | i++; 224 | logger.info("i = " + i); 225 | try { 226 | logger.info("bot.sendVoice()") 227 | logger.info(bot.sendVoice({ 228 | "chat_id": '207014603', 229 | "voice": "AwACAgUAAxkBAANPXz0ZirFc3YhpQSkdls9ViGAZpXcAAjEBAAIW5-hV7eYfJXG125wbBA", 230 | })) 231 | } catch (error) { 232 | logger.error(error) 233 | } 234 | 235 | var file_id1 = "1XNmIIbH-t-l0S-dFLHiCrTRBUnHpkREH" 236 | i++; 237 | logger.info("i = " + i); 238 | try { 239 | logger.info("bot.sendVideoNote()") 240 | logger.info(bot.sendVideoNote({ 241 | "chat_id": '207014603', 242 | "video_note": DriveApp.getFileById(file_id1).getBlob(), 243 | })) 244 | } catch (error) { 245 | logger.error(error) 246 | } 247 | 248 | i++; 249 | logger.info("i = " + i); 250 | try { 251 | logger.info("bot.sendMediaGroup()") 252 | var InputMediaPhoto1 = { 253 | "type":"video", 254 | "media":"BAACAgUAAxkBAANVXz5oRnhqL64hjn7cSehLZ4tAglIAAp0CAAIW5_hVaqDIhG5rxaUbBA", 255 | } 256 | var InputMediaPhoto2 = { 257 | "type":"photo", 258 | "media":"AgACAgUAAxkBAANUXz5m5Xeocvw_d5cAAe_BzeQ-qZ7dAAIcqjEbFuf4VaKfsSSEF43bFm0aa3QAAwEAAwIAA3kAA7XOBQABGwQ", 259 | } 260 | logger.info(bot.sendMediaGroup({ 261 | "chat_id": '207014603', 262 | "media": [InputMediaPhoto1,InputMediaPhoto2], 263 | })) 264 | } catch (error) { 265 | logger.error(error) 266 | } 267 | 268 | i++; 269 | logger.info("i = " + i); 270 | var rt = '' 271 | try { 272 | logger.info("bot.sendLocation()") 273 | rt = bot.sendLocation({ 274 | "chat_id": '207014603', 275 | "latitude": "24.065642", 276 | "longitude": 120.562652, 277 | "live_period": 60 278 | }) 279 | logger.info(rt) 280 | } catch (error) { 281 | logger.error(error) 282 | } 283 | 284 | i++; // 需接續上面的才有用 285 | logger.info("i = " + i); 286 | var rt = JSON.parse(rt) 287 | try { 288 | logger.info("bot.editMessageLiveLocation()") 289 | logger.info(rt = bot.editMessageLiveLocation({ 290 | "chat_id": '207014603', 291 | "message_id": rt.result.message_id, 292 | "latitude": "25.065642", 293 | "longitude": 121.562652, 294 | })) 295 | } catch (error) { 296 | logger.error(error) 297 | } 298 | 299 | i++; // 需接續上面的才有用 300 | logger.info("i = " + i); 301 | var rt = JSON.parse(rt) 302 | try { 303 | logger.info("bot.stopMessageLiveLocation()") 304 | logger.info(bot.stopMessageLiveLocation({ 305 | "chat_id": '207014603', 306 | "message_id": rt.result.message_id, 307 | })) 308 | } catch (error) { 309 | logger.error(error) 310 | } 311 | 312 | i++; 313 | logger.info("i = " + i); 314 | try { 315 | logger.info("bot.sendVenue()") 316 | logger.info(bot.sendVenue({ 317 | "chat_id": '207014603', 318 | "latitude": "25.065642", 319 | "longitude": 121.562652, 320 | "title" : '030//', 321 | "address" : '0X路32號', 322 | "foursquare_type":"food/icecream", 323 | })) 324 | } catch (error) { 325 | logger.error(error) 326 | } 327 | 328 | i++; 329 | logger.info("i = " + i); 330 | try { 331 | logger.info("bot.sendContact()") 332 | logger.info(bot.sendContact({ 333 | "chat_id": '207014603', 334 | "phone_number" : '0800000123', 335 | "first_name" : '王', 336 | "last_name" : '小名', 337 | })) 338 | } catch (error) { 339 | logger.error(error) 340 | } 341 | 342 | i++; 343 | logger.info("i = " + i); 344 | try { 345 | logger.info("bot.sendPoll()") 346 | logger.info(bot.sendPoll({ 347 | "chat_id": '207014603', 348 | "question" : '午餐?', 349 | "options" : ["西瓜","芒果","榴槤"], 350 | })) 351 | } catch (error) { 352 | logger.error(error) 353 | } 354 | 355 | i++; 356 | logger.info("i = " + i); 357 | try { 358 | logger.info("bot.sendDice()") 359 | logger.info(bot.sendDice({ 360 | "chat_id": '207014603', 361 | })) 362 | } catch (error) { 363 | logger.error(error) 364 | } 365 | 366 | i++; 367 | logger.info("i = " + i); 368 | try { 369 | logger.info("bot.sendChatAction()") 370 | logger.info(bot.sendChatAction({ 371 | "chat_id": '207014603', 372 | "action":"typing", 373 | })) 374 | } catch (error) { 375 | logger.error(error) 376 | } 377 | 378 | i++; 379 | logger.info("i = " + i); 380 | try { 381 | logger.info("bot.getUserProfilePhotos()") 382 | logger.info(bot.getUserProfilePhotos({ 383 | "user_id": '207014603', 384 | })) 385 | } catch (error) { 386 | logger.error(error) 387 | } 388 | 389 | i++; 390 | logger.info("i = " + i); 391 | try { 392 | logger.info("bot.getUserProfilePhotos()") 393 | logger.info(bot.getUserProfilePhotos({ 394 | "user_id": '207014603', 395 | })) 396 | } catch (error) { 397 | logger.error(error) 398 | } 399 | 400 | i++; 401 | logger.info("i = " + i); 402 | try { 403 | logger.info("bot.kickChatMember()") 404 | logger.info(bot.kickChatMember({ 405 | "chat_id": '-1001097080770', 406 | "user_id": '808968740', 407 | })) 408 | } catch (error) { 409 | logger.error(error) 410 | } 411 | 412 | i++; 413 | logger.info("i = " + i); 414 | try { 415 | logger.info("bot.unbanChatMember()") 416 | logger.info(bot.unbanChatMember({ 417 | "chat_id": '-1001097080770', 418 | "user_id": '808968740', 419 | })) 420 | } catch (error) { 421 | logger.error(error) 422 | } 423 | 424 | i++; //NU 425 | logger.info("i = " + i); 426 | try { 427 | logger.info("bot.kickChatMember()") 428 | logger.info(bot.kickChatMember({ 429 | "chat_id": '-1001097080770', 430 | "user_id": '808968740', 431 | "until_date": 35 432 | })) 433 | } catch (error) { 434 | logger.error(error) 435 | } 436 | 437 | i++; 438 | logger.info("i = " + i); 439 | try { 440 | logger.info("bot.unbanChatMember()") 441 | logger.info(bot.unbanChatMember({ 442 | "chat_id": '-1001097080770', 443 | "user_id": '808968740', 444 | })) 445 | } catch (error) { 446 | logger.error(error) 447 | } 448 | 449 | i++; 450 | logger.info("i = " + i); 451 | try { 452 | var permissions = { 453 | "can_send_messages":true, 454 | "can_send_media_messages":true, 455 | "can_send_polls":true, 456 | "can_send_other_messages":true, 457 | "can_add_web_page_previews":true, 458 | "can_change_info":true, 459 | "can_invite_users":true, 460 | "can_pin_messages":true, 461 | } 462 | logger.info("bot.restrictChatMember()") 463 | logger.info(bot.restrictChatMember({ 464 | "chat_id": '-1001097080770', 465 | "user_id": '808968740', 466 | "permissions":permissions 467 | })) 468 | } catch (error) { 469 | logger.error(error) 470 | } 471 | 472 | i++; 473 | logger.info("i = " + i); 474 | try { 475 | logger.info("bot.promoteChatMember()") 476 | logger.info(bot.promoteChatMember({ 477 | "chat_id": '-1001097080770', 478 | "user_id": '808968740', 479 | "can_pin_messages":true 480 | })) 481 | } catch (error) { 482 | logger.error(error) 483 | } 484 | 485 | i++; 486 | logger.info("i = " + i); 487 | try { 488 | logger.info("bot.setChatAdministratorCustomTitle()") 489 | logger.info(bot.setChatAdministratorCustomTitle({ 490 | "chat_id": '-1001097080770', 491 | "user_id": '808968740', 492 | "custom_title": "幸運星⭐" 493 | })) 494 | } catch (error) { 495 | logger.error(error) 496 | } 497 | 498 | i++; 499 | logger.info("i = " + i); 500 | try { 501 | var permissions = { 502 | "can_change_info":true, 503 | } 504 | logger.info("bot.setChatPermissions()") 505 | logger.info(bot.setChatPermissions({ 506 | "chat_id": '-1001097080770', 507 | "user_id": '808968740', 508 | "permissions":permissions 509 | })) 510 | } catch (error) { 511 | logger.error(error) 512 | } 513 | 514 | i++; 515 | logger.info("i = " + i); 516 | try { 517 | logger.info("bot.exportChatInviteLink()") 518 | logger.info(bot.exportChatInviteLink({ 519 | "chat_id": '-1001097080770', 520 | })) 521 | } catch (error) { 522 | logger.error(error) 523 | } 524 | 525 | i++; 526 | logger.info("i = " + i); 527 | try { 528 | var file_id = "1Y02FXMKdFD1IpZGg5RgSNlLLWQjNc6d_" 529 | logger.info("bot.setChatPhoto()") 530 | logger.info(bot.setChatPhoto({ 531 | "chat_id": '-1001097080770', 532 | 'photo': DriveApp.getFileById(file_id).getBlob() 533 | })) 534 | } catch (error) { 535 | logger.error(error) 536 | } 537 | 538 | i++; 539 | logger.info("i = " + i); 540 | try { 541 | logger.info("bot.deleteChatPhoto()") 542 | logger.info(bot.deleteChatPhoto({ 543 | "chat_id": '-1001097080770', 544 | })) 545 | } catch (error) { 546 | logger.error(error) 547 | } 548 | 549 | i++; 550 | logger.info("i = " + i); 551 | try { 552 | logger.info("bot.setChatTitle()") 553 | logger.info(bot.setChatTitle({ 554 | "chat_id": '-1001097080770', 555 | "title": '逆流(超級)', 556 | })) 557 | } catch (error) { 558 | logger.error(error) 559 | } 560 | 561 | i++; 562 | logger.info("i = " + i); 563 | try { 564 | logger.info("bot.pinChatMessage()") 565 | logger.info(bot.pinChatMessage({ 566 | "chat_id": '-1001097080770', 567 | "message_id": 347, 568 | })) 569 | } catch (error) { 570 | logger.error(error) 571 | } 572 | 573 | i++; 574 | logger.info("i = " + i); 575 | try { 576 | logger.info("bot.unpinChatMessage()") 577 | logger.info(bot.unpinChatMessage({ 578 | "chat_id": '-1001097080770', 579 | "message_id": 347, 580 | })) 581 | } catch (error) { 582 | logger.error(error) 583 | } 584 | 585 | i++; 586 | logger.info("i = " + i); 587 | try { 588 | logger.info("bot.leaveChat()") 589 | logger.info(bot.leaveChat({ 590 | "chat_id": '-1001097080770', 591 | })) 592 | } catch (error) { 593 | logger.error(error) 594 | } 595 | 596 | i++; 597 | logger.info("i = " + i); 598 | try { 599 | logger.info("bot.getChat()") 600 | logger.info(bot.getChat({ 601 | "chat_id": '-1001097080770', 602 | })) 603 | } catch (error) { 604 | logger.error(error) 605 | } 606 | 607 | i++; 608 | logger.info("i = " + i); 609 | try { 610 | logger.info("bot.getChatAdministrators()") 611 | logger.info(bot.getChatAdministrators({ 612 | "chat_id": '-1001097080770', 613 | })) 614 | } catch (error) { 615 | logger.error(error) 616 | } 617 | 618 | i++; 619 | logger.info("i = " + i); 620 | try { 621 | logger.info("bot.getChatMembersCount()") 622 | logger.info(bot.getChatMembersCount({ 623 | "chat_id": '-1001097080770', 624 | })) 625 | } catch (error) { 626 | logger.error(error) 627 | } 628 | 629 | i++; 630 | logger.info("i = " + i); 631 | try { 632 | logger.info("bot.getChatMember()") 633 | logger.info(bot.getChatMember({ 634 | "chat_id": '-1001097080770', 635 | "user_id": test_me_char_id 636 | })) 637 | } catch (error) { 638 | logger.error(error) 639 | } 640 | 641 | i++; // 因為人數未達100人 642 | logger.info("i = " + i); 643 | try { 644 | logger.info("bot.setChatStickerSet()") 645 | logger.info(bot.setChatStickerSet({ 646 | "chat_id": '-1001097080770', 647 | "sticker_set_name": "meme_72" 648 | })) 649 | } catch (error) { 650 | logger.error(error) 651 | } 652 | 653 | i++; // 因為人數未達100人 654 | logger.info("i = " + i); 655 | try { 656 | logger.info("bot.deleteChatStickerSet()") 657 | logger.info(bot.deleteChatStickerSet({ 658 | "chat_id": '-1001097080770', 659 | })) 660 | } catch (error) { 661 | logger.error(error) 662 | } 663 | 664 | answerCallbackQuery 因為是回應型所以不測試了 665 | 除非哪天有心情寫 userbot 測試 666 | 667 | i++; 668 | logger.info("i = " + i); 669 | try { 670 | logger.info("bot.setMyCommands()") 671 | logger.info(bot.setMyCommands({ 672 | "commands": [{"command":"help","description":"救救我啊我救我"}], 673 | })) 674 | } catch (error) { 675 | logger.error(error) 676 | } 677 | 678 | i++; 679 | logger.info("i = " + i); 680 | try { 681 | logger.info("bot.getMyCommands()") 682 | logger.info(bot.getMyCommands()) 683 | } catch (error) { 684 | logger.error(error) 685 | } 686 | 687 | i++; 688 | logger.info("i = " + i); 689 | try { 690 | logger.info("bot.setMyCommands()") 691 | logger.info(bot.setMyCommands({ 692 | "commands": [], 693 | })) 694 | } catch (error) { 695 | logger.error(error) 696 | } 697 | 698 | i++; 699 | logger.info("i = " + i); 700 | try { 701 | logger.info("bot.sendSticker()") 702 | logger.info(bot.sendSticker({ 703 | "chat_id": test_me_char_id, 704 | "sticker": 'CAACAgUAAxkBAANuX0N8qEoLkBRzYp96Q-YzKh1uclAAAkIFAALJQ7UJ7Q1Nag_aYQkbBA', 705 | })) 706 | } catch (error) { 707 | logger.error(error) 708 | } 709 | 710 | i++; 711 | logger.info("i = " + i); 712 | try { 713 | logger.info("bot.sendSticker()") 714 | logger.info(bot.sendSticker({ 715 | "chat_id": test_me_char_id, 716 | "sticker": 'CAACAgUAAxkBAANuX0N8qEoLkBRzYp96Q-YzKh1uclAAAkIFAALJQ7UJ7Q1Nag_aYQkbBA', 717 | })) 718 | } catch (error) { 719 | logger.error(error) 720 | } 721 | 722 | i++; 723 | logger.info("i = " + i); 724 | try { 725 | logger.info("bot.getStickerSet()") 726 | logger.info(bot.getStickerSet({ 727 | "name": "unit_test_by_CiFang_bot", 728 | })) 729 | } catch (error) { 730 | logger.error(error) 731 | } 732 | 733 | i++; 734 | logger.info("i = " + i); 735 | try { 736 | var file_id = "1P2wK9hAM4MNo2VL8nGnPFlJYXhCj0xfz" 737 | logger.info("bot.uploadStickerFile()") 738 | logger.info(bot.uploadStickerFile({ 739 | "user_id": test_me_char_id, 740 | "png_sticker": DriveApp.getFileById(file_id).getBlob(), 741 | })) 742 | } catch (error) { 743 | logger.error(error) 744 | } 745 | 746 | i++; 747 | logger.info("i = " + i); 748 | try { 749 | var file_id = "1xk4xfC2dre1ax9ixhXB8dKqAWA_1tLAr" 750 | logger.info("bot.createNewStickerSet()") 751 | logger.info(bot.createNewStickerSet({ 752 | "user_id": test_me_char_id, 753 | "name": "unit_test_by_CiFang_bot", 754 | "title": "此方的unit_test", 755 | "png_sticker": DriveApp.getFileById(file_id).getBlob(), 756 | "emojis": "⭐" 757 | })) 758 | } catch (error) { 759 | logger.error(error) 760 | } 761 | 762 | i++; 763 | logger.info("i = " + i); 764 | try { 765 | var file_id = "1P2wK9hAM4MNo2VL8nGnPFlJYXhCj0xfz" 766 | logger.info("bot.uploadStickerFile()") 767 | logger.info(bot.uploadStickerFile({ 768 | "user_id": test_me_char_id, 769 | "png_sticker": DriveApp.getFileById(file_id).getBlob(), 770 | })) 771 | } catch (error) { 772 | logger.error(error) 773 | } 774 | 775 | i++; 776 | logger.info("i = " + i); 777 | try { 778 | logger.info("bot.addStickerToSet()") 779 | logger.info(bot.addStickerToSet({ 780 | "user_id": test_me_char_id, 781 | "name":"unit_test_by_CiFang_bot", 782 | "png_sticker":"BQACAgUAAxUAAV9Dh8RETrH39XROWYtMBDuPtHRIAAI_AQACP2UZVj4hNmpM6aq1GwQ", 783 | "emojis": "☂️" 784 | })) 785 | } catch (error) { 786 | logger.error(error) 787 | } 788 | 789 | i++; 790 | logger.info("i = " + i); 791 | try { 792 | logger.info("bot.setStickerPositionInSet()") 793 | logger.info(bot.setStickerPositionInSet({ 794 | "sticker": "CAACAgUAAx0CQWQfwgACAWtfQ5P1mz4DhgZLcRHydITrin0MJQACrwADy8pWDJQZhMROQnQ3GwQ", 795 | "position":1 796 | })) 797 | } catch (error) { 798 | logger.error(error) 799 | } 800 | 801 | i++; 802 | logger.info("i = " + i); 803 | try { 804 | logger.info("bot.deleteStickerFromSet()") 805 | logger.info(bot.deleteStickerFromSet({ 806 | "sticker": "CAACAgUAAx0CQWQfwgACAWtfQ5P1mz4DhgZLcRHydITrin0MJQACrwADy8pWDJQZhMROQnQ3GwQ", 807 | })) 808 | } catch (error) { 809 | logger.error(error) 810 | } 811 | 812 | i++; 813 | logger.info("i = " + i); 814 | try { 815 | var file_id = "1qZJwWFbukd17tfd3wV2bvD_nkvUAxgee" 816 | logger.info("bot.setStickerSetThumb()") 817 | logger.info(bot.setStickerSetThumb({ 818 | "name": "unit_test_by_CiFang_bot", 819 | "user_id":test_me_char_id, 820 | "thumb":DriveApp.getFileById(file_id).getBlob(), 821 | })) 822 | } catch (error) { 823 | logger.error(error) 824 | } 825 | 826 | i++; 827 | logger.info("i = " + i); 828 | try { 829 | var InlineQueryResult = [{ 830 | type: 'article', 831 | id: '1', 832 | title: "title1", 833 | input_message_content: { 834 | "message_text": "text1" 835 | } 836 | }, { 837 | type: 'article', 838 | id: '2', 839 | title: "title2", 840 | input_message_content: { 841 | "message_text": "text2" 842 | } 843 | }] 844 | logger.info("bot.answerInlineQuery()") 845 | logger.info(bot.answerInlineQuery({ 846 | // inline_query_id 要及時生。 這個已通過 847 | "inline_query_id": contents.inline_query.id, 848 | "results": InlineQueryResult 849 | })) 850 | } catch (error) { 851 | logger.error(error) 852 | } 853 | 854 | 855 | 856 | 857 | 858 | 859 | } 860 | -------------------------------------------------------------------------------- /tgbot.ts: -------------------------------------------------------------------------------- 1 | /** Telegram bot class */ 2 | export class tgbot { 3 | token: string 4 | api_url: string 5 | 6 | /** 7 | * @param {string} token - The bot token 8 | */ 9 | constructor(token: string) { 10 | this.token = token 11 | this.api_url = `https://api.telegram.org/bot${this.token}/` 12 | } 13 | 14 | // === Getting updates === 15 | // 怎麼沒有用r QQ 16 | /** 17 | * @param {object} options 18 | * @param {number} options.offset - offset 19 | * @param {number} options.limit - limit 20 | * @param {number} options.timeout - timeout 21 | * @param {string[]} options.allowed_updates - allowed_updates 22 | */ 23 | public getUpdates( 24 | { 25 | offset = '', 26 | limit = 100, 27 | timeout = 0, 28 | allowed_updates = '' 29 | }: { 30 | offset?: number | string, 31 | limit?: number, 32 | timeout?: number, 33 | allowed_updates?: string | string[], 34 | } = {} 35 | ) { 36 | /** 37 | * @param {object} options 38 | * @param {number} options.offset - offset 39 | * @param {number} options.limit - limit 40 | * @param {number} options.timeout - timeout 41 | * @param {string[]} options.allowed_updates - allowed_updates 42 | */ 43 | 44 | let start_payload = { 45 | "method": "getUpdates", 46 | "offset": offset, 47 | "limit": limit, 48 | "timeout": timeout, 49 | "allowed_updates": allowed_updates, 50 | } 51 | return this.start(start_payload) 52 | } 53 | 54 | public setWebhook({ 55 | url = '', 56 | certificate = '', 57 | max_connections = 40, 58 | allowed_updates = [] 59 | }: { 60 | url: string, 61 | certificate?: any, 62 | max_connections?: number, 63 | allowed_updates?: string[], 64 | } = { 65 | url: '', 66 | } 67 | ) { 68 | if (url === '') this.miss_parameter("url") 69 | let start_payload = { 70 | "method": "setWebhook", 71 | "url": url, 72 | "certificate": certificate, 73 | "max_connections": max_connections, 74 | "allowed_updates": allowed_updates, 75 | } 76 | return this.start(start_payload) 77 | } 78 | 79 | public deleteWebhook() { 80 | let start_payload = { 81 | "method": "deleteWebhook", 82 | } 83 | return this.start(start_payload) 84 | } 85 | 86 | public getWebhookInfo() { 87 | let start_payload = { 88 | "method": "getWebhookInfo", 89 | } 90 | return this.start(start_payload) 91 | } 92 | 93 | // === Available methods === 94 | public getMe() { 95 | let start_payload = { 96 | "method": "getMe", 97 | } 98 | return this.start(start_payload) 99 | } 100 | 101 | public sendMessage( 102 | { 103 | chat_id = '', 104 | text = '', 105 | parse_mode = '', 106 | disable_web_page_preview = false, 107 | disable_notification = false, 108 | reply_to_message_id = '', 109 | reply_markup = '', 110 | }: { 111 | chat_id: string | number, 112 | text: string, 113 | parse_mode?: string | undefined, 114 | disable_web_page_preview?: Boolean | undefined, 115 | disable_notification?: Boolean | undefined, 116 | reply_to_message_id?: string | number | undefined, 117 | reply_markup?: any | undefined, 118 | } = { 119 | chat_id: '', 120 | text: '', 121 | } 122 | ) { 123 | if (chat_id === '') this.miss_parameter("chat_id") 124 | if (text === '') this.miss_parameter("chat_id") 125 | let start_payload = { 126 | "method": "sendMessage", 127 | 'chat_id': String(chat_id), 128 | 'text': String(text), 129 | 'parse_mode': String(parse_mode), 130 | 'disable_web_page_preview': Boolean(disable_web_page_preview), 131 | 'disable_notification': Boolean(disable_notification), 132 | 'reply_to_message_id': Number(reply_to_message_id), 133 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 134 | } 135 | if (start_payload['reply_markup'] == null) { 136 | delete start_payload['reply_markup'] 137 | } 138 | return this.start(start_payload) 139 | } 140 | 141 | public forwardMessage( 142 | { 143 | chat_id = '', 144 | from_chat_id = '', 145 | disable_notification = false, 146 | message_id = '' 147 | }: { 148 | chat_id: string | number, 149 | from_chat_id: string | number, 150 | disable_notification?: boolean, 151 | message_id: string | number, 152 | } = { 153 | chat_id: '', 154 | from_chat_id: '', 155 | message_id: '' 156 | } 157 | ) { 158 | if (chat_id === '') this.miss_parameter("chat_id") 159 | if (from_chat_id === '') this.miss_parameter("from_chat_id") 160 | if (message_id === '') this.miss_parameter("message_id") 161 | let start_payload = { 162 | "method": "forwardMessage", 163 | 'chat_id': String(chat_id), 164 | 'from_chat_id': String(from_chat_id), 165 | 'disable_notification': Boolean(disable_notification), 166 | 'message_id': Number(message_id) 167 | } 168 | return this.start(start_payload) 169 | } 170 | 171 | public sendPhoto( 172 | { 173 | chat_id = '', 174 | photo = '', 175 | caption = '', 176 | parse_mode = '', 177 | disable_notification = false, 178 | reply_to_message_id = '', 179 | reply_markup = '' 180 | }: { 181 | chat_id: string | number, 182 | photo: any, 183 | caption?: string, 184 | parse_mode?: string, 185 | disable_notification?: boolean, 186 | reply_to_message_id?: string | number, 187 | reply_markup?: any, 188 | } = { 189 | chat_id: '', 190 | photo: '', 191 | } 192 | ) { 193 | if (chat_id === '') this.miss_parameter("chat_id") 194 | if (photo === '') this.miss_parameter("photo") 195 | let start_payload = { 196 | "method": "sendPhoto", 197 | 'chat_id': String(chat_id), 198 | 'photo': photo, 199 | 'caption': String(caption), 200 | 'parse_mode': String(parse_mode), 201 | 'disable_notification': Boolean(disable_notification), 202 | 'reply_to_message_id': Number(reply_to_message_id), 203 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 204 | } 205 | if (start_payload['reply_markup'] == null) { 206 | delete start_payload['reply_markup'] 207 | } 208 | return this.start(start_payload) 209 | } 210 | 211 | public sendAudio( 212 | { 213 | chat_id = '', 214 | audio = '', 215 | caption = '', 216 | parse_mode = '', 217 | duration = '', 218 | performer = '', 219 | title = '', 220 | thumb = '', 221 | disable_notification = false, 222 | reply_to_message_id = '', 223 | reply_markup = '' 224 | }: { 225 | chat_id: string | number, 226 | audio: any, 227 | caption?: string, 228 | parse_mode?: string, 229 | duration?: number | string, 230 | performer?: string, 231 | title?: string, 232 | thumb?: any, 233 | disable_notification?: boolean, 234 | reply_to_message_id?: string | number, 235 | reply_markup?: any, 236 | } = { 237 | chat_id: '', 238 | audio: '', 239 | } 240 | ) { 241 | if (chat_id === '') this.miss_parameter("chat_id") 242 | if (audio === '') this.miss_parameter("audio") 243 | let start_payload = { 244 | "method": "sendAudio", 245 | 'chat_id': String(chat_id), 246 | 'audio': audio, 247 | 'caption': String(caption), 248 | 'parse_mode': String(parse_mode), 249 | 'duration': Number(duration), 250 | 'performer': String(performer), 251 | 'title': String(title), 252 | 'thumb': thumb, 253 | 'disable_notification': Boolean(disable_notification), 254 | 'reply_to_message_id': Number(reply_to_message_id), 255 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 256 | } 257 | if (start_payload['reply_markup'] == null) { 258 | delete start_payload['reply_markup'] 259 | } 260 | return this.start(start_payload) 261 | } 262 | 263 | public sendDocument( 264 | { 265 | chat_id = '', 266 | document = '', 267 | thumb = '', 268 | caption = '', 269 | parse_mode = '', 270 | disable_notification = false, 271 | reply_to_message_id = '', 272 | reply_markup = '' 273 | }: { 274 | chat_id: number | string, 275 | document: any, 276 | thumb?: any, 277 | caption?: string, 278 | parse_mode?: string, 279 | disable_notification?: boolean, 280 | reply_to_message_id?: number | string, 281 | reply_markup?: any, 282 | } = { 283 | chat_id: '', 284 | document: '', 285 | } 286 | ) { 287 | if (chat_id === '') this.miss_parameter("chat_id") 288 | if (document === '') this.miss_parameter("document") 289 | let start_payload = { 290 | "method": "sendDocument", 291 | 'chat_id': String(chat_id), 292 | 'document': document, 293 | 'thumb': thumb, 294 | 'caption': String(caption), 295 | 'parse_mode': String(parse_mode), 296 | 'disable_notification': Boolean(disable_notification), 297 | 'reply_to_message_id': Number(reply_to_message_id), 298 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 299 | } 300 | if (start_payload['reply_markup'] == null) { 301 | delete start_payload['reply_markup'] 302 | } 303 | return this.start(start_payload) 304 | } 305 | 306 | public sendVideo( 307 | { 308 | chat_id = '', 309 | video = '', 310 | duration = '', 311 | width = '', 312 | height = '', 313 | thumb = '', 314 | caption = '', 315 | parse_mode = '', 316 | supports_streaming = false, 317 | disable_notification = false, 318 | reply_to_message_id = '', 319 | reply_markup = '' 320 | }: { 321 | chat_id: number | string, 322 | video: any, 323 | duration?: number | string, 324 | width?: number | string, 325 | height?: number | string, 326 | thumb?: any, 327 | caption?: string, 328 | parse_mode?: string, 329 | supports_streaming?: boolean, 330 | disable_notification?: boolean, 331 | reply_to_message_id?: number | string, 332 | reply_markup?: any, 333 | } = { 334 | chat_id: '', 335 | video: '', 336 | } 337 | ) { 338 | if (chat_id === '') this.miss_parameter("chat_id") 339 | if (video === '') this.miss_parameter("video") 340 | let start_payload = { 341 | "method": "sendVideo", 342 | 'chat_id': String(chat_id), 343 | 'video': video, 344 | 'duration': Number(duration), 345 | 'width': Number(width), 346 | 'height': Number(height), 347 | 'thumb': thumb, 348 | 'caption': String(caption), 349 | 'parse_mode': String(parse_mode), 350 | 'supports_streaming': Boolean(supports_streaming), 351 | 'disable_notification': Boolean(disable_notification), 352 | 'reply_to_message_id': Number(reply_to_message_id), 353 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 354 | } 355 | if (start_payload['reply_markup'] == null) { 356 | delete start_payload['reply_markup'] 357 | } 358 | return this.start(start_payload) 359 | } 360 | 361 | public sendAnimation( 362 | { 363 | chat_id = '', 364 | animation = '', 365 | duration = '', 366 | width = '', 367 | height = '', 368 | thumb = '', 369 | caption = '', 370 | parse_mode = '', 371 | disable_notification = false, 372 | reply_to_message_id = '', 373 | reply_markup = '' 374 | }: { 375 | chat_id: number | string, 376 | animation: any, 377 | duration?: number | string, 378 | width?: number | string, 379 | height?: number | string, 380 | thumb?: any, 381 | caption?: string, 382 | parse_mode?: string, 383 | disable_notification?: boolean, 384 | reply_to_message_id?: number | string, 385 | reply_markup?: any, 386 | } = { 387 | chat_id: '', 388 | animation: '', 389 | } 390 | ) { 391 | if (chat_id === '') this.miss_parameter("chat_id") 392 | if (animation === '') this.miss_parameter("animation") 393 | let start_payload = { 394 | "method": "sendAnimation", 395 | 'chat_id': String(chat_id), 396 | 'animation': animation, 397 | 'duration': Number(duration), 398 | 'width': Number(width), 399 | 'height': Number(height), 400 | 'thumb': thumb, 401 | 'caption': String(caption), 402 | 'parse_mode': String(parse_mode), 403 | 'disable_notification': Boolean(disable_notification), 404 | 'reply_to_message_id': Number(reply_to_message_id), 405 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 406 | } 407 | if (start_payload['reply_markup'] == null) { 408 | delete start_payload['reply_markup'] 409 | } 410 | return this.start(start_payload) 411 | } 412 | 413 | public sendVoice( 414 | { 415 | chat_id = '', 416 | voice = '', 417 | duration = '', 418 | caption = '', 419 | parse_mode = '', 420 | disable_notification = false, 421 | reply_to_message_id = '', 422 | reply_markup = '' 423 | }: { 424 | chat_id: number | string, 425 | voice: any, 426 | duration?: number | string, 427 | caption?: string, 428 | parse_mode?: string, 429 | disable_notification?: boolean, 430 | reply_to_message_id?: number | string, 431 | reply_markup?: any, 432 | } = { 433 | chat_id: '', 434 | voice: '', 435 | } 436 | ) { 437 | if (chat_id === '') this.miss_parameter("chat_id") 438 | if (voice === '') this.miss_parameter("voice") 439 | let start_payload = { 440 | "method": "sendVoice", 441 | 'chat_id': String(chat_id), 442 | 'voice': voice, 443 | 'duration': Number(duration), 444 | 'caption': String(caption), 445 | 'parse_mode': String(parse_mode), 446 | 'disable_notification': Boolean(disable_notification), 447 | 'reply_to_message_id': Number(reply_to_message_id), 448 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 449 | } 450 | if (start_payload['reply_markup'] == null) { 451 | delete start_payload['reply_markup'] 452 | } 453 | return this.start(start_payload) 454 | } 455 | 456 | public sendVideoNote( 457 | { 458 | chat_id = '', 459 | video_note = '', 460 | duration = '', 461 | length = '', 462 | thumb = '', 463 | disable_notification = false, 464 | reply_to_message_id = '', 465 | reply_markup = '' 466 | }: { 467 | chat_id: number | string, 468 | video_note: any, 469 | duration?: number | string, 470 | length?: string, 471 | thumb?: any, 472 | disable_notification?: boolean, 473 | reply_to_message_id?: number | string, 474 | reply_markup?: any, 475 | } = { 476 | chat_id: '', 477 | video_note: '', 478 | } 479 | ) { 480 | if (chat_id === '') this.miss_parameter("chat_id") 481 | if (video_note === '') this.miss_parameter("video_note") 482 | let start_payload = { 483 | "method": "sendVideoNote", 484 | 'chat_id': String(chat_id), 485 | 'video_note': video_note, 486 | 'length': Number(length), 487 | 'duration': Number(duration), 488 | 'thumb': thumb, 489 | 'disable_notification': Boolean(disable_notification), 490 | 'reply_to_message_id': Number(reply_to_message_id), 491 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 492 | } 493 | if (start_payload['reply_markup'] == null) { 494 | delete start_payload['reply_markup'] 495 | } 496 | return this.start(start_payload) 497 | } 498 | 499 | public sendMediaGroup( 500 | { 501 | chat_id = '', 502 | media = [], 503 | disable_notification = false, 504 | reply_to_message_id = '', 505 | }: { 506 | chat_id: number | string, 507 | media: any[], 508 | disable_notification?: boolean, 509 | reply_to_message_id?: number | string, 510 | } 511 | = { 512 | chat_id: '', 513 | media: [], 514 | } 515 | ) { 516 | if (chat_id === '') this.miss_parameter("chat_id") 517 | if (media === []) this.miss_parameter("media") 518 | let start_payload = { 519 | "method": "sendMediaGroup", 520 | 'chat_id': String(chat_id), 521 | 'media': JSON.stringify(media), 522 | 'disable_notification': Boolean(disable_notification), 523 | 'reply_to_message_id': Number(reply_to_message_id), 524 | } 525 | return this.start(start_payload) 526 | } 527 | 528 | public sendLocation( 529 | { 530 | chat_id = '', 531 | latitude = '', 532 | longitude = '', 533 | live_period = null, 534 | disable_notification = false, 535 | reply_to_message_id = '', 536 | reply_markup = '' 537 | }: { 538 | chat_id: number | string, 539 | latitude: number | string, 540 | longitude: number | string, 541 | live_period?: number | null, 542 | disable_notification?: boolean, 543 | reply_to_message_id?: number | string, 544 | reply_markup?: any, 545 | } = { 546 | chat_id: '', 547 | latitude: '', 548 | longitude: '', 549 | } 550 | ) { 551 | if (chat_id === '') this.miss_parameter("chat_id") 552 | if (latitude === '') this.miss_parameter("latitude") 553 | if (longitude === '') this.miss_parameter("longitude") 554 | let start_payload = { 555 | "method": "sendLocation", 556 | 'chat_id': String(chat_id), 557 | 'latitude': Number(latitude), 558 | 'longitude': Number(longitude), 559 | 'live_period': Number(live_period), 560 | 'disable_notification': Boolean(disable_notification), 561 | 'reply_to_message_id': Number(reply_to_message_id), 562 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 563 | } 564 | if (start_payload['reply_markup'] == null) { 565 | delete start_payload['reply_markup'] 566 | } 567 | return this.start(start_payload) 568 | } 569 | 570 | public editMessageLiveLocation( 571 | { 572 | chat_id = '', 573 | message_id = null, 574 | inline_message_id = '', 575 | latitude = null, 576 | longitude = null, 577 | reply_markup = '' 578 | }: { 579 | chat_id?: number | string, 580 | message_id?: number | null, 581 | inline_message_id?: string, 582 | latitude: number | null, 583 | longitude: number | null, 584 | reply_markup?: any, 585 | } = { 586 | latitude: null, 587 | longitude: null, 588 | } 589 | ) { 590 | if (latitude === null) this.miss_parameter("latitude") 591 | if (longitude === null) this.miss_parameter("longitude") 592 | let start_payload = { 593 | "method": "editMessageLiveLocation", 594 | 'chat_id': String(chat_id), 595 | 'message_id': Number(message_id), 596 | 'inline_message_id': String(inline_message_id), 597 | 'latitude': Number(latitude), 598 | 'longitude': Number(longitude), 599 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 600 | } 601 | if (start_payload['reply_markup'] == null) { 602 | delete start_payload['reply_markup'] 603 | } 604 | return this.start(start_payload) 605 | } 606 | 607 | public stopMessageLiveLocation( 608 | { 609 | chat_id = '', 610 | message_id = null, 611 | inline_message_id = '', 612 | reply_markup = '' 613 | }: { 614 | chat_id?: number | string, 615 | message_id?: number | null, 616 | inline_message_id?: string, 617 | reply_markup?: any, 618 | } = {} 619 | ) { 620 | let start_payload = { 621 | "method": "stopMessageLiveLocation", 622 | 'chat_id': String(chat_id), 623 | 'message_id': Number(message_id), 624 | 'inline_message_id': String(inline_message_id), 625 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 626 | } 627 | if (start_payload['reply_markup'] == null) { 628 | delete start_payload['reply_markup'] 629 | } 630 | return this.start(start_payload) 631 | } 632 | 633 | public sendVenue( 634 | { 635 | chat_id = '', 636 | latitude = null, 637 | longitude = null, 638 | title = '', 639 | address = '', 640 | foursquare_id = '', 641 | foursquare_type = '', 642 | disable_notification = false, 643 | reply_to_message_id = '', 644 | reply_markup = '' 645 | }: { 646 | chat_id: number | string, 647 | latitude: number | null, 648 | longitude: number | null, 649 | title: string, 650 | address: string, 651 | foursquare_id?: string, 652 | foursquare_type?: string, 653 | disable_notification?: boolean, 654 | reply_to_message_id?: number | string, 655 | reply_markup?: any, 656 | } = { 657 | chat_id: '', 658 | latitude: null, 659 | longitude: null, 660 | title: '', 661 | address: '', 662 | } 663 | ) { 664 | if (chat_id === '') this.miss_parameter("chat_id") 665 | if (latitude === null) this.miss_parameter("latitude") 666 | if (longitude === null) this.miss_parameter("longitude") 667 | if (title === '') this.miss_parameter("title") 668 | if (address === '') this.miss_parameter("address") 669 | let start_payload = { 670 | "method": "sendVenue", 671 | 'chat_id': String(chat_id), 672 | 'latitude': Number(latitude), 673 | 'longitude': Number(longitude), 674 | 'title': String(title), 675 | 'address': String(address), 676 | 'foursquare_id': String(foursquare_id), 677 | 'foursquare_type': String(foursquare_type), 678 | 'disable_notification': Boolean(disable_notification), 679 | 'reply_to_message_id': Number(reply_to_message_id), 680 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 681 | } 682 | if (start_payload['reply_markup'] == null) { 683 | delete start_payload['reply_markup'] 684 | } 685 | return this.start(start_payload) 686 | } 687 | 688 | public sendContact( 689 | { 690 | chat_id = '', 691 | phone_number = '', 692 | first_name = '', 693 | last_name = '', 694 | vcard = '', 695 | disable_notification = false, 696 | reply_to_message_id = '', 697 | reply_markup = '' 698 | }: { 699 | chat_id: number | string, 700 | phone_number: string, 701 | first_name: string, 702 | last_name?: string, 703 | vcard?: string, 704 | disable_notification?: boolean, 705 | reply_to_message_id?: number | string, 706 | reply_markup?: any, 707 | } = { 708 | chat_id: '', 709 | phone_number: '', 710 | first_name: '', 711 | } 712 | ) { 713 | if (chat_id === '') this.miss_parameter("chat_id") 714 | if (phone_number === '') this.miss_parameter("phone_number") 715 | if (first_name === '') this.miss_parameter("first_name") 716 | let start_payload = { 717 | "method": "sendContact", 718 | 'chat_id': String(chat_id), 719 | 'phone_number': String(phone_number), 720 | 'first_name': String(first_name), 721 | 'last_name': String(last_name), 722 | 'vcard': String(vcard), 723 | 'disable_notification': Boolean(disable_notification), 724 | 'reply_to_message_id': Number(reply_to_message_id), 725 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 726 | } 727 | if (start_payload['reply_markup'] == null) { 728 | delete start_payload['reply_markup'] 729 | } 730 | return this.start(start_payload) 731 | } 732 | 733 | public sendPoll( 734 | { 735 | chat_id = '', 736 | question = '', 737 | options = [], 738 | is_anonymous = false, 739 | type = 'regular', 740 | allows_multiple_answers = false, 741 | correct_option_id = null, 742 | explanation = '', 743 | explanation_parse_mode = '', 744 | open_period = null, 745 | close_date = null, 746 | is_closed = false, 747 | disable_notification = false, 748 | reply_to_message_id = '', 749 | reply_markup = '' 750 | }: { 751 | chat_id: number | string, 752 | question: string, 753 | options: string[], 754 | is_anonymous?: boolean, 755 | type?: string, 756 | allows_multiple_answers?: boolean, 757 | correct_option_id?: number | null, 758 | explanation?: string, 759 | explanation_parse_mode?: string, 760 | open_period?: number | null, 761 | close_date?: number | null, 762 | is_closed?: boolean, 763 | disable_notification?: boolean, 764 | reply_to_message_id?: number | string, 765 | reply_markup?: any, 766 | } = { 767 | chat_id: '', 768 | question: '', 769 | options: [], 770 | } 771 | ) { 772 | if (chat_id === '') this.miss_parameter("chat_id") 773 | if (question === '') this.miss_parameter("question") 774 | if (options === []) this.miss_parameter("options") 775 | let start_payload = { 776 | "method": "sendPoll", 777 | 'chat_id': String(chat_id), 778 | 'question': String(question), 779 | 'options': JSON.stringify(options), 780 | 'is_anonymous': Boolean(is_anonymous), 781 | 'type': String(type), 782 | 'allows_multiple_answers': Boolean(allows_multiple_answers), 783 | 'correct_option_id': Number(correct_option_id), 784 | 'explanation': String(explanation), 785 | 'explanation_parse_mode': String(explanation_parse_mode), 786 | 'open_period': Number(open_period), 787 | 'close_date': Number(close_date), 788 | 'is_closed': Boolean(is_closed), 789 | 'disable_notification': Boolean(disable_notification), 790 | 'reply_to_message_id': Number(reply_to_message_id), 791 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 792 | } 793 | if (start_payload['reply_markup'] == null) { 794 | delete start_payload['reply_markup'] 795 | } 796 | return this.start(start_payload) 797 | } 798 | 799 | public sendDice( 800 | { 801 | chat_id = '', 802 | emoji = '', 803 | disable_notification = false, 804 | reply_to_message_id = '', 805 | reply_markup = '' 806 | }: { 807 | chat_id: number | string, 808 | emoji?: string, 809 | disable_notification?: boolean, 810 | reply_to_message_id?: number | string, 811 | reply_markup?: any, 812 | } = { 813 | chat_id: '', 814 | } 815 | ) { 816 | if (chat_id === '') this.miss_parameter("chat_id") 817 | let start_payload = { 818 | "method": "sendDice", 819 | 'chat_id': String(chat_id), 820 | 'emoji': String(emoji), 821 | 'disable_notification': Boolean(disable_notification), 822 | 'reply_to_message_id': Number(reply_to_message_id), 823 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 824 | } 825 | if (start_payload['reply_markup'] == null) { 826 | delete start_payload['reply_markup'] 827 | } 828 | return this.start(start_payload) 829 | } 830 | 831 | public sendChatAction( 832 | { 833 | chat_id = '', 834 | action = '', 835 | }: { 836 | chat_id: number | string, 837 | action: string, 838 | } = { 839 | chat_id: '', 840 | action: '', 841 | } 842 | ) { 843 | if (chat_id === '') this.miss_parameter("chat_id") 844 | if (action === '') this.miss_parameter("action") 845 | let start_payload = { 846 | "method": "sendChatAction", 847 | 'chat_id': String(chat_id), 848 | 'action': String(action), 849 | } 850 | return this.start(start_payload) 851 | } 852 | 853 | public getUserProfilePhotos( 854 | { 855 | user_id = '', 856 | offset = null, 857 | limit = 100, 858 | }: { 859 | user_id: string | number, 860 | offset?: number | null, 861 | limit?: number 862 | } = { 863 | user_id: '', 864 | } 865 | ) { 866 | if (user_id === '') this.miss_parameter("user_id") 867 | let start_payload = { 868 | "method": "getUserProfilePhotos", 869 | 'user_id': String(user_id), // 對... 官網寫Integer ,但是要String 870 | "offset": Number(offset), 871 | "limit": Number(limit), 872 | } 873 | return this.start(start_payload) 874 | } 875 | 876 | public getFile( 877 | { 878 | file_id = '', 879 | }: { 880 | file_id: string, 881 | } = { 882 | file_id: '', 883 | } 884 | ) { 885 | if (file_id === '') this.miss_parameter("file_id") 886 | let start_payload = { 887 | "method": "getFile", 888 | 'file_id': String(file_id), 889 | } 890 | return this.start(start_payload) 891 | } 892 | 893 | public kickChatMember( 894 | // kickChatMember TG會忽略掉 until_date 參數,需要再行實驗觀察 895 | { 896 | chat_id = '', 897 | user_id = '', 898 | until_date = null 899 | }: { 900 | chat_id: number | string, 901 | user_id: string, 902 | until_date?: number | null, 903 | } = { 904 | chat_id: '', 905 | user_id: '', 906 | } 907 | ) { 908 | if (chat_id === '') this.miss_parameter("chat_id") 909 | if (user_id === '') this.miss_parameter("user_id") 910 | let start_payload = { 911 | "method": "kickChatMember", 912 | 'chat_id': String(chat_id), 913 | 'user_id': String(user_id), 914 | 'until_date': Number(until_date) 915 | } 916 | return this.start(start_payload) 917 | } 918 | 919 | public unbanChatMember( 920 | { 921 | chat_id = '', 922 | user_id = '', 923 | }: { 924 | chat_id: number | string, 925 | user_id: string, 926 | } = { 927 | chat_id: '', 928 | user_id: '', 929 | } 930 | ) { 931 | if (chat_id === '') this.miss_parameter("chat_id") 932 | if (user_id === '') this.miss_parameter("user_id") 933 | let start_payload = { 934 | "method": "unbanChatMember", 935 | 'chat_id': String(chat_id), 936 | 'user_id': String(user_id), 937 | } 938 | return this.start(start_payload) 939 | } 940 | 941 | public restrictChatMember( 942 | { 943 | chat_id = '', 944 | user_id = '', 945 | permissions = {}, 946 | until_date = null 947 | }: { 948 | chat_id: number | string, 949 | user_id: number | string, 950 | permissions: object, 951 | until_date?: number | null, 952 | } = { 953 | chat_id: '', 954 | user_id: '', 955 | permissions: {}, 956 | } 957 | ) { 958 | if (chat_id === '') this.miss_parameter("chat_id") 959 | if (user_id === '') this.miss_parameter("user_id") 960 | if (permissions === {}) this.miss_parameter("permissions") 961 | let start_payload = { 962 | "method": "restrictChatMember", 963 | 'chat_id': String(chat_id), 964 | 'user_id': String(user_id), // 對... 官網寫Integer ,但是要String 965 | 'permissions': JSON.stringify(permissions), 966 | 'until_date': Number(until_date) 967 | } 968 | return this.start(start_payload) 969 | } 970 | 971 | public promoteChatMember( 972 | // 如果要使用這個功能,bot需有 "新增管理員"的權限? 還是全部的權限? 973 | { 974 | chat_id = '', 975 | user_id = '', 976 | can_change_info = null, 977 | can_post_messages = null, 978 | can_edit_messages = null, 979 | can_delete_messages = null, 980 | can_invite_users = null, 981 | can_restrict_members = null, 982 | can_pin_messages = null, 983 | can_promote_members = null, 984 | }: { 985 | chat_id: number | string, 986 | user_id: number | string, 987 | can_change_info?: boolean | null, 988 | can_post_messages?: boolean | null, 989 | can_edit_messages?: boolean | null, 990 | can_delete_messages?: boolean | null, 991 | can_invite_users?: boolean | null, 992 | can_restrict_members?: boolean | null, 993 | can_pin_messages?: boolean | null, 994 | can_promote_members?: boolean | null, 995 | } = { 996 | chat_id: '', 997 | user_id: '', 998 | } 999 | ) { 1000 | if (chat_id === '') this.miss_parameter("chat_id") 1001 | if (user_id === '') this.miss_parameter("user_id") 1002 | let start_payload = { 1003 | "method": "promoteChatMember", 1004 | 'chat_id': String(chat_id), 1005 | 'user_id': String(user_id), // 對... 官網寫Integer ,但是要String 1006 | 'can_change_info': Boolean(can_change_info), 1007 | 'can_post_messages': Boolean(can_post_messages), 1008 | 'can_edit_messages': Boolean(can_edit_messages), 1009 | 'can_delete_messages': Boolean(can_delete_messages), 1010 | 'can_invite_users': Boolean(can_invite_users), 1011 | 'can_restrict_members': Boolean(can_restrict_members), 1012 | 'can_pin_messages': Boolean(can_pin_messages), 1013 | 'can_promote_members': Boolean(can_promote_members), 1014 | } 1015 | return this.start(start_payload) 1016 | } 1017 | 1018 | public setChatAdministratorCustomTitle( 1019 | { 1020 | chat_id = '', 1021 | user_id = '', 1022 | custom_title = '', 1023 | }: { 1024 | chat_id: number | string, 1025 | user_id: number | string, 1026 | custom_title: string, 1027 | } = { 1028 | chat_id: '', 1029 | user_id: '', 1030 | custom_title: '', 1031 | } 1032 | ) { 1033 | if (chat_id === '') this.miss_parameter("chat_id") 1034 | if (user_id === '') this.miss_parameter("user_id") 1035 | let start_payload = { 1036 | "method": "setChatAdministratorCustomTitle", 1037 | 'chat_id': String(chat_id), 1038 | 'user_id': String(user_id), // 對... 官網寫Integer ,但是要String 1039 | 'custom_title': String(custom_title), 1040 | } 1041 | return this.start(start_payload) 1042 | } 1043 | 1044 | public setChatPermissions( 1045 | { 1046 | chat_id = '', 1047 | permissions = {}, 1048 | }: { 1049 | chat_id: number | string, 1050 | permissions: object, 1051 | } = { 1052 | chat_id: '', 1053 | permissions: {}, 1054 | } 1055 | ) { 1056 | if (chat_id === '') this.miss_parameter("chat_id") 1057 | if (permissions === {}) this.miss_parameter("permissions") 1058 | let start_payload = { 1059 | "method": "setChatPermissions", 1060 | 'chat_id': String(chat_id), 1061 | 'permissions': JSON.stringify(permissions), 1062 | } 1063 | return this.start(start_payload) 1064 | } 1065 | 1066 | public exportChatInviteLink( 1067 | { 1068 | chat_id = '', 1069 | }: { 1070 | chat_id: number | string, 1071 | } = { chat_id: '' } 1072 | ) { 1073 | if (chat_id === '') this.miss_parameter("chat_id") 1074 | let start_payload = { 1075 | "method": "exportChatInviteLink", 1076 | 'chat_id': String(chat_id), 1077 | } 1078 | return this.start(start_payload) 1079 | } 1080 | 1081 | public setChatPhoto( 1082 | // 照片僅能用新的上傳 1083 | { 1084 | chat_id = '', 1085 | photo = '', 1086 | }: { 1087 | chat_id: number | string, 1088 | photo: any, 1089 | } = { 1090 | chat_id: '', 1091 | photo: '', 1092 | } 1093 | ) { 1094 | if (chat_id === '') this.miss_parameter("chat_id") 1095 | if (photo === '') this.miss_parameter("photo") 1096 | let start_payload = { 1097 | "method": "setChatPhoto", 1098 | 'chat_id': String(chat_id), 1099 | 'photo': photo, 1100 | } 1101 | return this.start(start_payload) 1102 | } 1103 | 1104 | public deleteChatPhoto( 1105 | { 1106 | chat_id = '', 1107 | }: { 1108 | chat_id: number | string, 1109 | } = { 1110 | chat_id: '', 1111 | } 1112 | ) { 1113 | if (chat_id === '') this.miss_parameter("chat_id") 1114 | let start_payload = { 1115 | "method": "deleteChatPhoto", 1116 | 'chat_id': String(chat_id), 1117 | } 1118 | return this.start(start_payload) 1119 | } 1120 | 1121 | public setChatTitle( 1122 | // 特別的是,如果名子一樣的話,也會回傳 true 1123 | { 1124 | chat_id = '', 1125 | title = '', 1126 | }: { 1127 | chat_id: number | string, 1128 | title: string, 1129 | } = { 1130 | chat_id: '', 1131 | title: '', 1132 | } 1133 | ) { 1134 | if (chat_id === '') this.miss_parameter("chat_id") 1135 | if (title === '') this.miss_parameter("title") 1136 | let start_payload = { 1137 | "method": "setChatTitle", 1138 | 'chat_id': String(chat_id), 1139 | 'title': String(title), 1140 | } 1141 | return this.start(start_payload) 1142 | } 1143 | 1144 | public setChatDescription( 1145 | { 1146 | chat_id = '', 1147 | description = '', 1148 | }: { 1149 | chat_id: number | string, 1150 | description?: string, 1151 | } = { 1152 | chat_id: '', 1153 | } 1154 | ) { 1155 | if (chat_id === '') this.miss_parameter("chat_id") 1156 | let start_payload = { 1157 | "method": "setChatDescription", 1158 | 'chat_id': String(chat_id), 1159 | 'description': String(description), 1160 | } 1161 | return this.start(start_payload) 1162 | } 1163 | 1164 | public pinChatMessage( 1165 | { 1166 | chat_id = '', 1167 | message_id = null, 1168 | disable_notification = false, 1169 | }: { 1170 | chat_id: number | string, 1171 | message_id: number | null, 1172 | disable_notification?: boolean, 1173 | } = { 1174 | chat_id: '', 1175 | message_id: null, 1176 | } 1177 | ) { 1178 | if (chat_id === '') this.miss_parameter("chat_id") 1179 | if (message_id === null) this.miss_parameter("message_id") 1180 | let start_payload = { 1181 | "method": "pinChatMessage", 1182 | 'chat_id': String(chat_id), 1183 | 'message_id': Number(message_id), 1184 | 'disable_notification': Boolean(disable_notification), 1185 | } 1186 | return this.start(start_payload) 1187 | } 1188 | 1189 | public unpinChatMessage( 1190 | { 1191 | chat_id = '', 1192 | }: { 1193 | chat_id: number | string, 1194 | } = { 1195 | chat_id: '', 1196 | } 1197 | ) { 1198 | if (chat_id === '') this.miss_parameter("chat_id") 1199 | let start_payload = { 1200 | "method": "unpinChatMessage", 1201 | 'chat_id': String(chat_id), 1202 | } 1203 | return this.start(start_payload) 1204 | } 1205 | 1206 | public leaveChat( 1207 | { 1208 | chat_id = '', 1209 | }: { 1210 | chat_id: number | string, 1211 | } = { 1212 | chat_id: '', 1213 | } 1214 | ) { 1215 | if (chat_id === '') this.miss_parameter("chat_id") 1216 | let start_payload = { 1217 | "method": "leaveChat", 1218 | 'chat_id': String(chat_id), 1219 | } 1220 | return this.start(start_payload) 1221 | } 1222 | 1223 | public getChat( 1224 | { 1225 | chat_id = '', 1226 | }: { 1227 | chat_id: number | string, 1228 | } = { 1229 | chat_id: '', 1230 | } 1231 | ) { 1232 | if (chat_id === '') this.miss_parameter("chat_id") 1233 | let start_payload = { 1234 | "method": "getChat", 1235 | 'chat_id': String(chat_id), 1236 | } 1237 | return this.start(start_payload) 1238 | } 1239 | 1240 | public getChatAdministrators( 1241 | { 1242 | chat_id = '', 1243 | }: { 1244 | chat_id: number | string, 1245 | } = { 1246 | chat_id: '', 1247 | } 1248 | ) { 1249 | if (chat_id === '') this.miss_parameter("chat_id") 1250 | let start_payload = { 1251 | "method": "getChatAdministrators", 1252 | 'chat_id': String(chat_id), 1253 | } 1254 | return this.start(start_payload) 1255 | } 1256 | 1257 | public getChatMembersCount( 1258 | { 1259 | chat_id = '', 1260 | }: { 1261 | chat_id: number | string, 1262 | } = { 1263 | chat_id: '', 1264 | } 1265 | ) { 1266 | if (chat_id === '') this.miss_parameter("chat_id") 1267 | let start_payload = { 1268 | "method": "getChatMembersCount", 1269 | 'chat_id': String(chat_id), 1270 | } 1271 | return this.start(start_payload) 1272 | } 1273 | 1274 | public getChatMember( 1275 | { 1276 | chat_id = '', 1277 | user_id = '', 1278 | }: { 1279 | chat_id: number | string, 1280 | user_id: number | string, 1281 | } = { 1282 | chat_id: '', 1283 | user_id: '', 1284 | } 1285 | ) { 1286 | if (chat_id === '') this.miss_parameter("chat_id") 1287 | if (user_id === '') this.miss_parameter("user_id") 1288 | let start_payload = { 1289 | "method": "getChatMember", 1290 | 'chat_id': String(chat_id), 1291 | 'user_id': String(user_id), // 對... 官網寫Integer ,但是要String 1292 | } 1293 | return this.start(start_payload) 1294 | } 1295 | 1296 | public setChatStickerSet( 1297 | // 人數未達100人則無法設定 1298 | { 1299 | chat_id = '', 1300 | sticker_set_name = '', 1301 | }: { 1302 | chat_id: number | string, 1303 | sticker_set_name: string, 1304 | } = { 1305 | chat_id: '', 1306 | sticker_set_name: '', 1307 | } 1308 | ) { 1309 | if (chat_id === '') this.miss_parameter("chat_id") 1310 | let start_payload = { 1311 | "method": "setChatStickerSet", 1312 | 'chat_id': String(chat_id), 1313 | 'sticker_set_name': String(sticker_set_name), 1314 | } 1315 | return this.start(start_payload) 1316 | } 1317 | 1318 | public deleteChatStickerSet( 1319 | // 人數未達100人則無法設定 1320 | { 1321 | chat_id = '', 1322 | }: { 1323 | chat_id: number | string, 1324 | } = { 1325 | chat_id: '', 1326 | } 1327 | ) { 1328 | if (chat_id === '') this.miss_parameter("chat_id") 1329 | let start_payload = { 1330 | "method": "deleteChatStickerSet", 1331 | 'chat_id': String(chat_id), 1332 | } 1333 | return this.start(start_payload) 1334 | } 1335 | 1336 | public answerCallbackQuery( 1337 | { 1338 | callback_query_id = '', 1339 | text = '', 1340 | show_alert = false, 1341 | url = '', 1342 | cache_time = null, 1343 | }: { 1344 | callback_query_id?: string, 1345 | text?: string, 1346 | show_alert?: boolean, 1347 | url?: string, 1348 | cache_time?: number | null, 1349 | } = { 1350 | callback_query_id: '', 1351 | } 1352 | ) { 1353 | if (callback_query_id === '') this.miss_parameter("callback_query_id") 1354 | let start_payload = { 1355 | "method": "answerCallbackQuery", 1356 | 'callback_query_id': String(callback_query_id), 1357 | 'text': String(text), 1358 | 'show_alert': Boolean(show_alert), 1359 | 'url': String(url), 1360 | 'cache_time': Number(cache_time), 1361 | } 1362 | return this.start(start_payload) 1363 | } 1364 | 1365 | public setMyCommands( 1366 | { 1367 | commands = [], 1368 | }: { 1369 | commands: object[] 1370 | } = { 1371 | commands: [], 1372 | } 1373 | ) { 1374 | if (commands === []) this.miss_parameter("commands") 1375 | let start_payload = { 1376 | "method": "setMyCommands", 1377 | 'commands': JSON.stringify(commands), 1378 | } 1379 | return this.start(start_payload) 1380 | } 1381 | 1382 | public getMyCommands() { 1383 | let start_payload = { 1384 | "method": "getMyCommands", 1385 | } 1386 | return this.start(start_payload) 1387 | } 1388 | 1389 | 1390 | 1391 | // === Updating messages === 1392 | public editMessageText( 1393 | { 1394 | chat_id = '', 1395 | message_id = null, 1396 | inline_message_id = '', 1397 | text = '', 1398 | parse_mode = '', 1399 | disable_web_page_preview = false, 1400 | reply_markup = '' 1401 | }: { 1402 | chat_id?: number | string, 1403 | message_id?: number | null, 1404 | inline_message_id?: string, 1405 | text: string, 1406 | parse_mode?: string, 1407 | disable_web_page_preview?: boolean, 1408 | reply_markup?: any, 1409 | } = { 1410 | text: '', 1411 | } 1412 | ) { 1413 | if (text === '') this.miss_parameter("text") 1414 | let start_payload = { 1415 | "method": "editMessageText", 1416 | 'chat_id': String(chat_id), 1417 | 'message_id': String(message_id), 1418 | 'inline_message_id': String(inline_message_id), 1419 | 'text': String(text), 1420 | 'parse_mode': String(parse_mode), 1421 | 'disable_web_page_preview': Boolean(disable_web_page_preview), 1422 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 1423 | } 1424 | if (start_payload['reply_markup'] == null) { 1425 | delete start_payload['reply_markup'] 1426 | } 1427 | return this.start(start_payload) 1428 | } 1429 | 1430 | public editMessageCaption( 1431 | { 1432 | chat_id = '', 1433 | message_id = null, 1434 | inline_message_id = '', 1435 | caption = '', 1436 | parse_mode = '', 1437 | disable_web_page_preview = false, 1438 | reply_markup = '' 1439 | }: { 1440 | chat_id?: number | string, 1441 | message_id?: number | null, 1442 | inline_message_id?: string, 1443 | caption?: string, 1444 | parse_mode?: string, 1445 | disable_web_page_preview?: boolean, 1446 | reply_markup?: any, 1447 | } = {} 1448 | ) { 1449 | let start_payload = { 1450 | "method": "editMessageCaption", 1451 | 'chat_id': String(chat_id), 1452 | 'message_id': String(message_id), 1453 | 'inline_message_id': String(inline_message_id), 1454 | 'caption': String(caption), 1455 | 'parse_mode': parse_mode, 1456 | 'disable_web_page_preview': disable_web_page_preview, 1457 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 1458 | } 1459 | if (start_payload['reply_markup'] == null) { 1460 | delete start_payload['reply_markup'] 1461 | } 1462 | return this.start(start_payload) 1463 | } 1464 | 1465 | public editMessageMedia( 1466 | { 1467 | chat_id = '', 1468 | message_id = null, 1469 | inline_message_id = '', 1470 | media = {}, 1471 | reply_markup = '' 1472 | }: { 1473 | chat_id?: number | string, 1474 | message_id?: number | null, 1475 | inline_message_id?: string, 1476 | media: object, 1477 | reply_markup?: any, 1478 | } = { 1479 | media: {}, 1480 | } 1481 | ) { 1482 | if (media === {}) this.miss_parameter("media") 1483 | let start_payload = { 1484 | "method": "editMessageMedia", 1485 | 'chat_id': String(chat_id), 1486 | 'message_id': String(message_id), 1487 | 'inline_message_id': String(inline_message_id), 1488 | 'media': String(media), 1489 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 1490 | } 1491 | if (start_payload['reply_markup'] == null) { 1492 | delete start_payload['reply_markup'] 1493 | } 1494 | return this.start(start_payload) 1495 | } 1496 | 1497 | public editMessageReplyMarkup( 1498 | { 1499 | chat_id = '', 1500 | message_id = null, 1501 | inline_message_id = '', 1502 | reply_markup = '' 1503 | }: { 1504 | chat_id?: number | string, 1505 | message_id?: number | null, 1506 | inline_message_id?: string, 1507 | reply_markup?: any, 1508 | } = {} 1509 | ) { 1510 | let start_payload = { 1511 | "method": "editMessageReplyMarkup", 1512 | 'chat_id': String(chat_id), 1513 | 'message_id': String(message_id), 1514 | 'inline_message_id': String(inline_message_id), 1515 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 1516 | } 1517 | if (start_payload['reply_markup'] == null) { 1518 | delete start_payload['reply_markup'] 1519 | } 1520 | return this.start(start_payload) 1521 | } 1522 | 1523 | public stopPoll( 1524 | { 1525 | chat_id = '', 1526 | message_id = null, 1527 | reply_markup = '' 1528 | }: { 1529 | chat_id: number | string, 1530 | message_id: number | null, 1531 | reply_markup?: any, 1532 | } = { 1533 | chat_id: '', 1534 | message_id: null, 1535 | } 1536 | ) { 1537 | if (chat_id === '') this.miss_parameter("chat_id") 1538 | if (message_id === null) this.miss_parameter("message_id") 1539 | let start_payload = { 1540 | "method": "stopPoll", 1541 | 'chat_id': String(chat_id), 1542 | 'message_id': String(message_id), 1543 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 1544 | } 1545 | if (start_payload['reply_markup'] == null) { 1546 | delete start_payload['reply_markup'] 1547 | } 1548 | return this.start(start_payload) 1549 | } 1550 | 1551 | public deleteMessage( 1552 | { 1553 | chat_id = '', 1554 | message_id = null, 1555 | }: { 1556 | chat_id: number | string, 1557 | message_id?: number | null, 1558 | } = { 1559 | chat_id: '', 1560 | message_id: null, 1561 | } 1562 | ) { 1563 | if (chat_id === '') this.miss_parameter("chat_id") 1564 | if (message_id === null) this.miss_parameter("message_id") 1565 | let start_payload = { 1566 | "method": "deleteMessage", 1567 | 'chat_id': String(chat_id), 1568 | 'message_id': String(message_id), 1569 | } 1570 | return this.start(start_payload) 1571 | } 1572 | 1573 | 1574 | 1575 | // === Stickers === 1576 | public sendSticker( 1577 | { 1578 | chat_id = '', 1579 | sticker = '', 1580 | disable_notification = false, 1581 | reply_to_message_id = '', 1582 | reply_markup = '', 1583 | }: { 1584 | chat_id: number | string, 1585 | sticker: any, 1586 | disable_notification?: boolean, 1587 | reply_to_message_id?: number | string, 1588 | reply_markup?: any, 1589 | } = { 1590 | chat_id: '', 1591 | sticker: '', 1592 | } 1593 | ) { 1594 | if (chat_id === '') this.miss_parameter("chat_id") 1595 | if (sticker === '') this.miss_parameter("sticker") 1596 | let start_payload = { 1597 | "method": "sendSticker", 1598 | 'chat_id': String(chat_id), 1599 | 'sticker': sticker, 1600 | 'disable_notification': Boolean(disable_notification), 1601 | 'reply_to_message_id': Number(reply_to_message_id), 1602 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 1603 | } 1604 | if (start_payload['reply_markup'] == null) { 1605 | delete start_payload['reply_markup'] 1606 | } 1607 | return this.start(start_payload) 1608 | } 1609 | 1610 | public getStickerSet( 1611 | { 1612 | name = '', 1613 | }: { 1614 | name: string, 1615 | } = { 1616 | name: '', 1617 | } 1618 | ) { 1619 | if (name === '') this.miss_parameter("name") 1620 | let start_payload = { 1621 | "method": "getStickerSet", 1622 | 'name': String(name), 1623 | } 1624 | return this.start(start_payload) 1625 | } 1626 | 1627 | public uploadStickerFile( 1628 | { 1629 | user_id = null, 1630 | png_sticker = '', 1631 | }: { 1632 | user_id: number | null, 1633 | png_sticker: any, 1634 | } = { 1635 | user_id: null, 1636 | png_sticker: '', 1637 | } 1638 | ) { 1639 | if (user_id === null) this.miss_parameter("user_id") 1640 | if (png_sticker === '') this.miss_parameter("png_sticker") 1641 | let start_payload = { 1642 | "method": "uploadStickerFile", 1643 | 'user_id': String(user_id), 1644 | 'png_sticker': png_sticker, 1645 | } 1646 | return this.start(start_payload) 1647 | } 1648 | 1649 | public createNewStickerSet( 1650 | { 1651 | user_id = null, //這個要數字的id 1652 | name = '', 1653 | title = '', 1654 | png_sticker = '', 1655 | tgs_sticker = '', 1656 | emojis = '', 1657 | contains_masks = false, 1658 | mask_position = null 1659 | }: { 1660 | user_id: number | null, 1661 | name: string, 1662 | title: string, 1663 | png_sticker?: any, 1664 | tgs_sticker?: any, 1665 | emojis: string, 1666 | contains_masks?: boolean 1667 | mask_position?: object | null, 1668 | } = { 1669 | user_id: null, 1670 | name: '', 1671 | title: '', 1672 | emojis: '', 1673 | } 1674 | ) { 1675 | if (user_id === null) this.miss_parameter("user_id") 1676 | if (name === '') this.miss_parameter("name") 1677 | if (title === '') this.miss_parameter("title") 1678 | if (emojis === '') this.miss_parameter("emojis") 1679 | let start_payload = { 1680 | "method": "createNewStickerSet", 1681 | 'user_id': String(user_id), 1682 | 'name': String(name), 1683 | 'title': String(title), 1684 | 'png_sticker': png_sticker, 1685 | 'tgs_sticker': tgs_sticker, 1686 | 'emojis': String(emojis), 1687 | 'contains_masks': Boolean(contains_masks), 1688 | 'mask_position': mask_position == null ? null : JSON.stringify(mask_position), 1689 | } 1690 | return this.start(start_payload) 1691 | } 1692 | 1693 | public addStickerToSet( 1694 | { 1695 | user_id = null, 1696 | name = '', 1697 | png_sticker = '', 1698 | tgs_sticker = '', 1699 | emojis = '', 1700 | mask_position = null, 1701 | }: { 1702 | user_id: number | null, 1703 | name: string, 1704 | png_sticker?: any, 1705 | tgs_sticker?: any, 1706 | emojis: string, 1707 | mask_position?: object | null, 1708 | } = { 1709 | user_id: null, 1710 | name: '', 1711 | emojis: '', 1712 | } 1713 | ) { 1714 | if (user_id === null) this.miss_parameter("user_id") 1715 | if (name === '') this.miss_parameter("name") 1716 | if (emojis === '') this.miss_parameter("emojis") 1717 | let start_payload = { 1718 | "method": "addStickerToSet", 1719 | 'user_id': String(user_id), 1720 | 'name': String(name), 1721 | 'png_sticker': png_sticker, 1722 | 'tgs_sticker': tgs_sticker, 1723 | 'emojis': String(emojis), 1724 | 'mask_position': mask_position == null ? null : JSON.stringify(mask_position), 1725 | } 1726 | return this.start(start_payload) 1727 | } 1728 | 1729 | public setStickerPositionInSet( 1730 | { 1731 | sticker = '', 1732 | position = null, 1733 | }: { 1734 | sticker: string, 1735 | position: number | null, 1736 | } = { 1737 | sticker: '', 1738 | position: null, 1739 | } 1740 | ) { 1741 | if (sticker === '') this.miss_parameter("sticker") 1742 | if (position === null) this.miss_parameter("position") 1743 | let start_payload = { 1744 | "method": "setStickerPositionInSet", 1745 | 'sticker': String(sticker), 1746 | 'position': Number(position), 1747 | } 1748 | return this.start(start_payload) 1749 | } 1750 | 1751 | public deleteStickerFromSet( 1752 | { 1753 | sticker = '', 1754 | }: { 1755 | sticker: string, 1756 | } = { 1757 | sticker: '', 1758 | } 1759 | ) { 1760 | if (sticker === '') this.miss_parameter("sticker") 1761 | let start_payload = { 1762 | "method": "deleteStickerFromSet", 1763 | 'sticker': String(sticker), 1764 | } 1765 | return this.start(start_payload) 1766 | } 1767 | 1768 | public setStickerSetThumb( 1769 | { 1770 | name = '', 1771 | user_id = null, 1772 | thumb = '', 1773 | }: { 1774 | name: string, 1775 | user_id: number | null, 1776 | thumb?: any, 1777 | } = { 1778 | user_id: null, 1779 | name: '', 1780 | } 1781 | ) { 1782 | if (name === '') this.miss_parameter("name") 1783 | if (user_id === null) this.miss_parameter("user_id") 1784 | let start_payload = { 1785 | "method": "setStickerSetThumb", 1786 | 'name': String(name), 1787 | 'user_id': String(user_id), 1788 | 'thumb': thumb, 1789 | } 1790 | return this.start(start_payload) 1791 | } 1792 | 1793 | 1794 | // === Inline mode === 1795 | public answerInlineQuery( 1796 | { 1797 | inline_query_id = '', 1798 | results = [], 1799 | cache_time = null, 1800 | is_personal = false, 1801 | next_offset = '', 1802 | switch_pm_text = '', 1803 | switch_pm_parameter = '', 1804 | }: { 1805 | inline_query_id: string, 1806 | results: object[], 1807 | cache_time?: number | null, 1808 | is_personal?: boolean, 1809 | next_offset?: string, 1810 | switch_pm_text?: string, 1811 | switch_pm_parameter?: string, 1812 | } = { 1813 | inline_query_id: '', 1814 | results: [], 1815 | } 1816 | ) { 1817 | if (inline_query_id === '') this.miss_parameter("inline_query_id") 1818 | if (results === []) this.miss_parameter("results") 1819 | let start_payload = { 1820 | "method": "answerInlineQuery", 1821 | 'inline_query_id': String(inline_query_id), 1822 | 'results': JSON.stringify(results), 1823 | 'cache_time': cache_time, 1824 | 'is_personal': Boolean(is_personal), 1825 | 'next_offset': String(next_offset), 1826 | 'switch_pm_text': String(switch_pm_text), 1827 | 'switch_pm_parameter': String(switch_pm_parameter), 1828 | } 1829 | return this.start(start_payload) 1830 | } 1831 | 1832 | 1833 | 1834 | // === Payments === 1835 | public sendInvoice({ 1836 | chat_id = '', 1837 | title = '', 1838 | description = '', 1839 | payload = '', 1840 | provider_token = '', 1841 | start_parameter = '', 1842 | currency = '', 1843 | prices = [], 1844 | provider_data = '', 1845 | photo_url = '', 1846 | photo_size = null, 1847 | photo_width = null, 1848 | photo_height = null, 1849 | need_name = false, 1850 | need_phone_number = false, 1851 | need_email = false, 1852 | need_shipping_address = false, 1853 | send_phone_number_to_provider = false, 1854 | send_email_to_provider = false, 1855 | is_flexible = false, 1856 | disable_notification = false, 1857 | reply_to_message_id = '', 1858 | reply_markup = '', 1859 | }: { 1860 | chat_id: number | string, 1861 | title: string, 1862 | description: string, 1863 | payload: string, 1864 | provider_token: string, 1865 | start_parameter: string, 1866 | currency: string, 1867 | prices: object[], 1868 | provider_data?: string, 1869 | photo_url?: string, 1870 | photo_size?: number | null, 1871 | photo_width?: number | null, 1872 | photo_height?: number | null, 1873 | need_name?: boolean, 1874 | need_phone_number?: boolean, 1875 | need_email?: boolean, 1876 | need_shipping_address?: boolean, 1877 | send_phone_number_to_provider?: boolean, 1878 | send_email_to_provider?: boolean, 1879 | is_flexible?: boolean, 1880 | disable_notification?: boolean, 1881 | reply_to_message_id?: number | string, 1882 | reply_markup?: any, 1883 | } = { 1884 | chat_id: '', 1885 | title: '', 1886 | description: '', 1887 | payload: '', 1888 | provider_token: '', 1889 | start_parameter: '', 1890 | currency: '', 1891 | prices: [], 1892 | }) { 1893 | if (chat_id === '') this.miss_parameter("chat_id") 1894 | if (title === '') this.miss_parameter("title") 1895 | if (description === '') this.miss_parameter("description") 1896 | if (payload === '') this.miss_parameter("payload") 1897 | if (provider_token === '') this.miss_parameter("provider_token") 1898 | if (start_parameter === '') this.miss_parameter("start_parameter") 1899 | if (currency === '') this.miss_parameter("currency") 1900 | if (prices === []) this.miss_parameter("prices") 1901 | let start_payload = { 1902 | "method": "sendInvoice", 1903 | 'chat_id': String(chat_id), 1904 | 'title': String(title), 1905 | 'description': String(description), 1906 | 'payload': String(payload), 1907 | 'provider_token': String(provider_token), 1908 | 'start_parameter': String(start_parameter), 1909 | 'currency': String(currency), 1910 | 'prices': prices, 1911 | 'provider_data': String(provider_data), 1912 | 'photo_url': String(photo_url), 1913 | 'photo_size': photo_size, 1914 | 'photo_width': photo_width, 1915 | 'photo_height': photo_height, 1916 | 'need_name': Boolean(need_name), 1917 | 'need_phone_number': Boolean(need_phone_number), 1918 | 'need_email': Boolean(need_email), 1919 | 'need_shipping_address': Boolean(need_shipping_address), 1920 | 'send_phone_number_to_provider': Boolean(send_phone_number_to_provider), 1921 | 'send_email_to_provider': Boolean(send_email_to_provider), 1922 | 'is_flexible': Boolean(is_flexible), 1923 | 'disable_notification': Boolean(disable_notification), 1924 | 'reply_to_message_id': Number(reply_to_message_id), 1925 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 1926 | } 1927 | if (start_payload['reply_markup'] == null) { 1928 | delete start_payload['reply_markup'] 1929 | } 1930 | return this.start(start_payload) 1931 | } 1932 | 1933 | public answerShippingQuery( 1934 | { 1935 | shipping_query_id = '', 1936 | ok = null, 1937 | shipping_options = null, 1938 | error_message = '', 1939 | }: { 1940 | shipping_query_id: string, 1941 | ok: boolean | null, 1942 | shipping_options?: object[] | null, 1943 | error_message?: string, 1944 | } = { 1945 | shipping_query_id: '', 1946 | ok: null, 1947 | } 1948 | ) { 1949 | if (shipping_query_id === '') this.miss_parameter("shipping_query_id") 1950 | if (ok === null) this.miss_parameter("ok") 1951 | let start_payload = { 1952 | "method": "answerShippingQuery", 1953 | 'shipping_query_id': String(shipping_query_id), 1954 | 'ok': Boolean(ok), 1955 | 'shipping_options ': shipping_options == null ? null : JSON.stringify(shipping_options), 1956 | 'error_message': String(error_message), 1957 | } 1958 | return this.start(start_payload) 1959 | } 1960 | 1961 | public answerPreCheckoutQuery( 1962 | { 1963 | pre_checkout_query_id = '', 1964 | ok = null, 1965 | error_message = '', 1966 | }: { 1967 | pre_checkout_query_id: string, 1968 | ok: boolean | null, 1969 | error_message?: string, 1970 | } = { 1971 | pre_checkout_query_id: '', 1972 | ok: null, 1973 | } 1974 | ) { 1975 | if (pre_checkout_query_id === '') this.miss_parameter("pre_checkout_query_id") 1976 | if (ok === null) this.miss_parameter("ok") 1977 | let start_payload = { 1978 | "method": "answerPreCheckoutQuery", 1979 | 'pre_checkout_query_id': String(pre_checkout_query_id), 1980 | 'ok': Boolean(ok), 1981 | 'error_message': error_message, 1982 | } 1983 | return this.start(start_payload) 1984 | } 1985 | 1986 | 1987 | // === Telegram Passport === 1988 | 1989 | public setPassportDataErrors( 1990 | { 1991 | user_id = '', 1992 | errors = null, 1993 | }: { 1994 | user_id: string, 1995 | errors: object[] | null, 1996 | } = { 1997 | user_id: '', 1998 | errors: null, 1999 | } 2000 | ) { 2001 | if (user_id === '') this.miss_parameter("user_id") 2002 | if (errors === null) this.miss_parameter("errors") 2003 | let start_payload = { 2004 | "method": "setPassportDataErrors", 2005 | "user_id": '', 2006 | "errors": null, 2007 | } 2008 | return this.start(start_payload) 2009 | } 2010 | 2011 | 2012 | // === Games === 2013 | 2014 | public sendGame( 2015 | { 2016 | chat_id = '', 2017 | game_short_name = null, 2018 | disable_notification = false, 2019 | reply_to_message_id = '', 2020 | reply_markup = '' 2021 | }: { 2022 | chat_id: string, 2023 | game_short_name: string | null, 2024 | disable_notification?: boolean, 2025 | reply_to_message_id?: number | string, 2026 | reply_markup?: any, 2027 | } = { 2028 | chat_id: '', 2029 | game_short_name: null, 2030 | } 2031 | ) { 2032 | if (chat_id === '') this.miss_parameter("chat_id") 2033 | if (game_short_name === null) this.miss_parameter("game_short_name") 2034 | let start_payload = { 2035 | "method": "sendGame", 2036 | "chat_id": '', 2037 | "game_short_name": game_short_name, 2038 | 'disable_notification': Boolean(disable_notification), 2039 | 'reply_to_message_id': Number(reply_to_message_id), 2040 | 'reply_markup': reply_markup == '' ? null : JSON.stringify(reply_markup), 2041 | } 2042 | if (start_payload['reply_markup'] == null) { 2043 | delete start_payload['reply_markup'] 2044 | } 2045 | return this.start(start_payload) 2046 | } 2047 | 2048 | public setGameScore( 2049 | { 2050 | user_id = '', 2051 | score = null, 2052 | force = null, 2053 | disable_edit_message = false, 2054 | chat_id = '', 2055 | message_id = '', 2056 | inline_message_id = '', 2057 | }: { 2058 | user_id: string, 2059 | score: number | null, 2060 | force?: null, 2061 | disable_edit_message?: boolean | null, 2062 | chat_id?: string | number, 2063 | message_id?: string | number, 2064 | inline_message_id?: string, 2065 | } = { 2066 | user_id: '', 2067 | score: null, 2068 | } 2069 | ) { 2070 | if (user_id === '') this.miss_parameter("user_id") 2071 | if (score === null) this.miss_parameter("score") 2072 | let start_payload = { 2073 | "method": "setGameScore", 2074 | "user_id": '', 2075 | "score": score, 2076 | "force": force, 2077 | "disable_edit_message": disable_edit_message, 2078 | "chat_id": String(chat_id), 2079 | "message_id": String(message_id), 2080 | "inline_message_id": String(inline_message_id), 2081 | } 2082 | return this.start(start_payload) 2083 | } 2084 | 2085 | public getGameHighScores( 2086 | { 2087 | user_id = '', 2088 | chat_id = '', 2089 | message_id = '', 2090 | inline_message_id = '', 2091 | }: { 2092 | user_id: string, 2093 | chat_id?: string | number, 2094 | message_id?: string | number, 2095 | inline_message_id?: string, 2096 | } = { 2097 | user_id: '', 2098 | } 2099 | ) { 2100 | if (user_id === '') this.miss_parameter("user_id") 2101 | let start_payload = { 2102 | "method": "getGameHighScores", 2103 | "user_id": '', 2104 | "chat_id": String(chat_id), 2105 | "message_id": String(message_id), 2106 | "inline_message_id": String(inline_message_id), 2107 | } 2108 | return this.start(start_payload) 2109 | } 2110 | 2111 | 2112 | 2113 | 2114 | // === public 自家der方法 === 2115 | public getPath( 2116 | { 2117 | file_id = '', 2118 | }: { 2119 | file_id: string, 2120 | } = { 2121 | file_id: '', 2122 | } 2123 | ) { 2124 | if (file_id === '') this.miss_parameter("file_id") 2125 | return this.getFile({"file_id":file_id}).result.file_path 2126 | } 2127 | 2128 | public getFileDownloadUrl( 2129 | { 2130 | path = '' 2131 | }: { 2132 | path: any 2133 | } = { 2134 | path: '' 2135 | } 2136 | ) { 2137 | if (path === '') this.miss_parameter("path") 2138 | let TGDurl = `https://api.telegram.org/file/bot${this.token}/${path}` 2139 | return TGDurl; 2140 | } 2141 | // === private 自家der方法 === 2142 | private miss_parameter(parameter: string) { 2143 | throw new Error(`Missing ${parameter}`) 2144 | } 2145 | 2146 | private start(payload: any) { 2147 | let data = { 2148 | "method": "post", 2149 | "payload": payload 2150 | } 2151 | try { 2152 | // @ts-ignore 2153 | return JSON.parse(UrlFetchApp.fetch(this.api_url, data)); 2154 | } catch (error) { 2155 | // @ts-ignore 2156 | var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; 2157 | var xhr = new XMLHttpRequest(); 2158 | xhr.open("POST", this.api_url, false); // 超重要,同步 2159 | xhr.setRequestHeader('Content-Type', ' application/json'); 2160 | xhr.send(JSON.stringify(payload)); 2161 | xhr.onreadystatechange = function() { 2162 | if (xhr.readyState == 4 && xhr.status == 200) { 2163 | return xhr.responseText; 2164 | } else { 2165 | throw new Error(`XMLHttpRequest error`); 2166 | } 2167 | }; 2168 | return JSON.parse(xhr.responseText); 2169 | } 2170 | } 2171 | } 2172 | -------------------------------------------------------------------------------- /tgbot.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"tgbot2.js","sourceRoot":"","sources":["tgbot.js"],"names":[],"mappings":"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"} --------------------------------------------------------------------------------