├── .gitignore ├── Procfile ├── README.md ├── const.js ├── img ├── 1.jpg ├── 2.jpg ├── botpic.jpg └── deploy │ ├── create_new_app.jpg │ ├── deploy.jpg │ ├── logs.jpg │ ├── resources.jpg │ ├── restart.jpg │ └── token_heroku.jpg ├── index.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .env 3 | package-lock.json -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | worker: npm start -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Создание телеграм бота на Telegraf.js 2 | 3 | ## Регистрация бота в Телеграм 4 | 5 | - В Телеграме найти бота @BotFather 6 | - Ввести команду /newbot 7 | - Следуя подсказкам придумать название бота и логин для него 8 | - Получить ссылку на нового бота и API токен 9 | - Ввести команду /mybots 10 | - Выбрать своего бота и нажать Edit Bot 11 | - Добавить информацию description, about, botpic, commands 12 | 13 | ## Инициализация проекта 14 | 15 | - Создать папку с названием проекта 16 | - Открыть проект в своей IDE или редакторе 17 | - Открыть терминал и перейти в папку с проектом 18 | > **ls, dir** посмотреть список каталогов 19 | > **cd ..** перейти на уровень выше 20 | > **cd каталог** перейти в каталог 21 | - проверить версию node.js если нет версии, то установить [node.js](https://nodejs.org/en/) 22 | > **node -v** проверить версию 23 | - инициализировать проект (создать файл package.json) 24 | > **npm init -y** 25 | - установить [nodemon](https://www.npmjs.com/package/nodemon) 26 | > **npm i -D nodemon** 27 | - установить [telegraf](https://www.npmjs.com/package/telegraf) 28 | > **npm i telegraf** 29 | - установить [dotenv](https://www.npmjs.com/package/dotenv) 30 | > **npm i dotenv** 31 | - Создать **файл .env** и записать в него: 32 | > BOT_TOKEN = Токен из @BotFather 33 | - Создать **файл index.js** и записать в него: 34 | > const { Telegraf, Markup } = require("telegraf") 35 | > require("dotenv").config() 36 | > const bot = new Telegraf(process.env.BOT_TOKEN) 37 | > bot.start((ctx) => ctx.reply('Welcome')) 38 | > bot.help((ctx) => ctx.reply('Send me a sticker')) 39 | > bot.on('sticker', (ctx) => ctx.reply('Like')) 40 | > bot.hears('hi', (ctx) => ctx.reply('Hey there')) 41 | > bot.launch() 42 | > process.once('SIGINT', () => bot.stop('SIGINT')) 43 | > process.once('SIGTERM', () => bot.stop('SIGTERM')) 44 | - Создать **файл .gitignore** 45 | > /node_modules 46 | > .env 47 | > package-lock.json 48 | - Создать **файл Procfile** 49 | > worker: npm start 50 | - Изменить скрипты в файле **package.json** 51 | > "scripts": { 52 | > "start": "node index.js", 53 | > "dev": "nodemon index.js" 54 | > }, 55 | - Запустить проект командой 56 | > npm run dev 57 | 58 | ## Деплой проекта на Heroku 59 | 60 | - Зарегистрироваться на [GitHub](https://github.com/) и войти 61 | - Создать репозиторий и запушить код бота 62 | - Зарегистрироваться на [Heroku](https://www.heroku.com/) и войти 63 | - Создать новое приложение 64 | ![new/create new app](./img/deploy/create_new_app.jpg) 65 | - Добавить константу с API токеном 66 | ![settings/config vars](./img/deploy/token_heroku.jpg) 67 | - Переключить Dyno с web на worker 68 | ![resources](./img/deploy/resources.jpg) 69 | - На вкладке Deploy связать проект с репозиторием GitHub 70 | ![deploy](./img/deploy/deploy.jpg) 71 | - Включить Automatic deploys (опционально) 72 | - Запусть Manual Deploy 73 | - Перезагрузить все Dyno 74 | ![more/restart all dynos](./img/deploy/restart.jpg) 75 | - Просматривать логи 76 | ![more/view logs](./img/deploy/logs.jpg) 77 | 78 | ### Полезные материалы 79 | 80 | - [Видео урок по созданию бота](https://youtu.be/YxHWfDdjIek) 81 | - [Обзор моего бота](https://youtu.be/IZj7up7CDdU) 82 | - [Шаблонные строки](https://youtu.be/OPeujASczVM) 83 | - [Тернарный оператор](https://youtu.be/C0rqUyNI5zA) 84 | - [Курс по JavaScript](https://www.youtube.com/playlist?list=PLuY6eeDuleINoCQtGZsMoVVCSgEH7gKQ5) 85 | - [Перехват ошибок try catch](https://youtu.be/jMoyWtoDtYA) 86 | - [Курс по Git + GitHub](https://www.youtube.com/playlist?list=PLuY6eeDuleIOMB2R_Kky05ZfiAx2_pbAH) 87 | 88 | ### Контакты ITDoctor 89 | 90 | [YouTube](https://www.youtube.com/c/ITDoctor) 91 | [Telegram](https://t.me/itdoctorstudio) и бот [@itdoctorNavigatorBot](https://t.me/itdoctorNavigatorBot?start) 92 | [Курсы на Udemy](https://www.udemy.com/user/useinov-ismail-asanovich/) 93 | [GitHub](https://github.com/morphIsmail) 94 | [VK](https://vk.com/itdoctorstudio) 95 | -------------------------------------------------------------------------------- /const.js: -------------------------------------------------------------------------------- 1 | // Команды бота 2 | const commands = ` 3 | /start - Перезапустить бота 4 | /help - Помощь 5 | /course - Курсы 6 | ` 7 | // Текстовые константы 8 | const text1 = ` 9 | 1 Жирный Текст для проверки обработчика и ссылка без превью 10 | ` 11 | const text2 = ` 12 | 2 Курсивный Текст для проверки обработчика, Зачёркнутый текст и Моноширинный текст 13 | ` 14 | const text3 = ` 15 | 3 Подчёркнутый Текст для проверки обработчика и ссылка с превью 16 | ` 17 | // Экспорт констант 18 | module.exports.commands = commands 19 | module.exports.text1 = text1 20 | module.exports.text2 = text2 21 | module.exports.text3 = text3 -------------------------------------------------------------------------------- /img/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morphIsmail/testitdbot/bcc866bdd55f73e3821aaeb93fea0eea7a5065d9/img/1.jpg -------------------------------------------------------------------------------- /img/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morphIsmail/testitdbot/bcc866bdd55f73e3821aaeb93fea0eea7a5065d9/img/2.jpg -------------------------------------------------------------------------------- /img/botpic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morphIsmail/testitdbot/bcc866bdd55f73e3821aaeb93fea0eea7a5065d9/img/botpic.jpg -------------------------------------------------------------------------------- /img/deploy/create_new_app.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morphIsmail/testitdbot/bcc866bdd55f73e3821aaeb93fea0eea7a5065d9/img/deploy/create_new_app.jpg -------------------------------------------------------------------------------- /img/deploy/deploy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morphIsmail/testitdbot/bcc866bdd55f73e3821aaeb93fea0eea7a5065d9/img/deploy/deploy.jpg -------------------------------------------------------------------------------- /img/deploy/logs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morphIsmail/testitdbot/bcc866bdd55f73e3821aaeb93fea0eea7a5065d9/img/deploy/logs.jpg -------------------------------------------------------------------------------- /img/deploy/resources.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morphIsmail/testitdbot/bcc866bdd55f73e3821aaeb93fea0eea7a5065d9/img/deploy/resources.jpg -------------------------------------------------------------------------------- /img/deploy/restart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morphIsmail/testitdbot/bcc866bdd55f73e3821aaeb93fea0eea7a5065d9/img/deploy/restart.jpg -------------------------------------------------------------------------------- /img/deploy/token_heroku.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morphIsmail/testitdbot/bcc866bdd55f73e3821aaeb93fea0eea7a5065d9/img/deploy/token_heroku.jpg -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // Импорт Telegraf и Markup 2 | const { 3 | Telegraf, 4 | Markup 5 | } = require('telegraf') 6 | // Импорт dotenv для защиты API токена 7 | require('dotenv').config() 8 | // Импорт нашего модуля с константами 9 | const my_const = require('./const') 10 | // Инициализация бота с помощью Telegraf 11 | const bot = new Telegraf(process.env.BOT_TOKEN) 12 | 13 | // Обработка команды /start 14 | bot.start((ctx) => ctx.reply(`Привет ${ctx.message.from.first_name ? ctx.message.from.first_name : 'незнакомец'}!`)) 15 | // Обработка команды /help 16 | bot.help((ctx) => ctx.reply(my_const.commands)) 17 | // Обработка команды /course 18 | bot.command('course', async (ctx) => { 19 | try { 20 | await ctx.replyWithHTML('Курсы', Markup.inlineKeyboard( 21 | [ 22 | [Markup.button.callback('Редакторы', 'btn_1'), Markup.button.callback('Обзоры', 'btn_2'), Markup.button.callback('JS', 'btn_3')] 23 | ] 24 | )) 25 | } catch (e) { 26 | console.error(e) 27 | } 28 | }) 29 | /** 30 | * Функция для отправки сообщения ботом 31 | * @param {String} id_btn Идентификатор кнопки для обработки 32 | * @param {String} src_img Путь к изображению, или false чтобы отправить только текст 33 | * @param {String} text Текстовое сообщение для отправки 34 | * @param {Boolean} preview Блокировать превью у ссылок или нет, true - блокировать, false - нет 35 | */ 36 | function addActionBot(id_btn, src_img, text, preview) { 37 | bot.action(id_btn, async (ctx) => { 38 | try { 39 | await ctx.answerCbQuery() 40 | if (src_img !== false) { 41 | await ctx.replyWithPhoto({ 42 | source: src_img 43 | }) 44 | } 45 | await ctx.replyWithHTML(text, { 46 | disable_web_page_preview: preview 47 | }) 48 | } catch (e) { 49 | console.error(e) 50 | } 51 | }) 52 | } 53 | // Обработчик кнопок с помощью функции 54 | addActionBot('btn_1', './img/1.jpg', my_const.text1, true) 55 | addActionBot('btn_2', './img/2.jpg', my_const.text2, true) 56 | addActionBot('btn_3', false, my_const.text3, false) 57 | 58 | // Запустить бота 59 | bot.launch() 60 | 61 | // Включить плавную остановку 62 | process.once('SIGINT', () => bot.stop('SIGINT')) 63 | process.once('SIGTERM', () => bot.stop('SIGTERM')) -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "testITDbot", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@sindresorhus/is": { 8 | "version": "0.14.0", 9 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", 10 | "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", 11 | "dev": true 12 | }, 13 | "@szmarczak/http-timer": { 14 | "version": "1.1.2", 15 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", 16 | "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", 17 | "dev": true, 18 | "requires": { 19 | "defer-to-connect": "^1.0.1" 20 | } 21 | }, 22 | "abbrev": { 23 | "version": "1.1.1", 24 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 25 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 26 | "dev": true 27 | }, 28 | "abort-controller": { 29 | "version": "3.0.0", 30 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 31 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 32 | "requires": { 33 | "event-target-shim": "^5.0.0" 34 | } 35 | }, 36 | "ansi-align": { 37 | "version": "3.0.0", 38 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", 39 | "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", 40 | "dev": true, 41 | "requires": { 42 | "string-width": "^3.0.0" 43 | }, 44 | "dependencies": { 45 | "string-width": { 46 | "version": "3.1.0", 47 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 48 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 49 | "dev": true, 50 | "requires": { 51 | "emoji-regex": "^7.0.1", 52 | "is-fullwidth-code-point": "^2.0.0", 53 | "strip-ansi": "^5.1.0" 54 | } 55 | } 56 | } 57 | }, 58 | "ansi-regex": { 59 | "version": "4.1.0", 60 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 61 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 62 | "dev": true 63 | }, 64 | "ansi-styles": { 65 | "version": "4.3.0", 66 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 67 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 68 | "dev": true, 69 | "requires": { 70 | "color-convert": "^2.0.1" 71 | } 72 | }, 73 | "anymatch": { 74 | "version": "3.1.2", 75 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 76 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 77 | "dev": true, 78 | "requires": { 79 | "normalize-path": "^3.0.0", 80 | "picomatch": "^2.0.4" 81 | } 82 | }, 83 | "balanced-match": { 84 | "version": "1.0.2", 85 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 86 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 87 | "dev": true 88 | }, 89 | "binary-extensions": { 90 | "version": "2.2.0", 91 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 92 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 93 | "dev": true 94 | }, 95 | "boxen": { 96 | "version": "4.2.0", 97 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", 98 | "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", 99 | "dev": true, 100 | "requires": { 101 | "ansi-align": "^3.0.0", 102 | "camelcase": "^5.3.1", 103 | "chalk": "^3.0.0", 104 | "cli-boxes": "^2.2.0", 105 | "string-width": "^4.1.0", 106 | "term-size": "^2.1.0", 107 | "type-fest": "^0.8.1", 108 | "widest-line": "^3.1.0" 109 | } 110 | }, 111 | "brace-expansion": { 112 | "version": "1.1.11", 113 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 114 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 115 | "dev": true, 116 | "requires": { 117 | "balanced-match": "^1.0.0", 118 | "concat-map": "0.0.1" 119 | } 120 | }, 121 | "braces": { 122 | "version": "3.0.2", 123 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 124 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 125 | "dev": true, 126 | "requires": { 127 | "fill-range": "^7.0.1" 128 | } 129 | }, 130 | "buffer-alloc": { 131 | "version": "1.2.0", 132 | "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", 133 | "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", 134 | "requires": { 135 | "buffer-alloc-unsafe": "^1.1.0", 136 | "buffer-fill": "^1.0.0" 137 | } 138 | }, 139 | "buffer-alloc-unsafe": { 140 | "version": "1.1.0", 141 | "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", 142 | "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" 143 | }, 144 | "buffer-fill": { 145 | "version": "1.0.0", 146 | "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", 147 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" 148 | }, 149 | "cacheable-request": { 150 | "version": "6.1.0", 151 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", 152 | "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", 153 | "dev": true, 154 | "requires": { 155 | "clone-response": "^1.0.2", 156 | "get-stream": "^5.1.0", 157 | "http-cache-semantics": "^4.0.0", 158 | "keyv": "^3.0.0", 159 | "lowercase-keys": "^2.0.0", 160 | "normalize-url": "^4.1.0", 161 | "responselike": "^1.0.2" 162 | }, 163 | "dependencies": { 164 | "get-stream": { 165 | "version": "5.2.0", 166 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 167 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 168 | "dev": true, 169 | "requires": { 170 | "pump": "^3.0.0" 171 | } 172 | }, 173 | "lowercase-keys": { 174 | "version": "2.0.0", 175 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 176 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", 177 | "dev": true 178 | } 179 | } 180 | }, 181 | "camelcase": { 182 | "version": "5.3.1", 183 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 184 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 185 | "dev": true 186 | }, 187 | "chalk": { 188 | "version": "3.0.0", 189 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 190 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 191 | "dev": true, 192 | "requires": { 193 | "ansi-styles": "^4.1.0", 194 | "supports-color": "^7.1.0" 195 | }, 196 | "dependencies": { 197 | "has-flag": { 198 | "version": "4.0.0", 199 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 200 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 201 | "dev": true 202 | }, 203 | "supports-color": { 204 | "version": "7.2.0", 205 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 206 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 207 | "dev": true, 208 | "requires": { 209 | "has-flag": "^4.0.0" 210 | } 211 | } 212 | } 213 | }, 214 | "chokidar": { 215 | "version": "3.5.2", 216 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", 217 | "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", 218 | "dev": true, 219 | "requires": { 220 | "anymatch": "~3.1.2", 221 | "braces": "~3.0.2", 222 | "fsevents": "~2.3.2", 223 | "glob-parent": "~5.1.2", 224 | "is-binary-path": "~2.1.0", 225 | "is-glob": "~4.0.1", 226 | "normalize-path": "~3.0.0", 227 | "readdirp": "~3.6.0" 228 | } 229 | }, 230 | "ci-info": { 231 | "version": "2.0.0", 232 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", 233 | "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", 234 | "dev": true 235 | }, 236 | "cli-boxes": { 237 | "version": "2.2.1", 238 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", 239 | "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", 240 | "dev": true 241 | }, 242 | "clone-response": { 243 | "version": "1.0.2", 244 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 245 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 246 | "dev": true, 247 | "requires": { 248 | "mimic-response": "^1.0.0" 249 | } 250 | }, 251 | "color-convert": { 252 | "version": "2.0.1", 253 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 254 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 255 | "dev": true, 256 | "requires": { 257 | "color-name": "~1.1.4" 258 | } 259 | }, 260 | "color-name": { 261 | "version": "1.1.4", 262 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 263 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 264 | "dev": true 265 | }, 266 | "concat-map": { 267 | "version": "0.0.1", 268 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 269 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 270 | "dev": true 271 | }, 272 | "configstore": { 273 | "version": "5.0.1", 274 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", 275 | "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", 276 | "dev": true, 277 | "requires": { 278 | "dot-prop": "^5.2.0", 279 | "graceful-fs": "^4.1.2", 280 | "make-dir": "^3.0.0", 281 | "unique-string": "^2.0.0", 282 | "write-file-atomic": "^3.0.0", 283 | "xdg-basedir": "^4.0.0" 284 | } 285 | }, 286 | "crypto-random-string": { 287 | "version": "2.0.0", 288 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", 289 | "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", 290 | "dev": true 291 | }, 292 | "debug": { 293 | "version": "4.3.2", 294 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 295 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 296 | "requires": { 297 | "ms": "2.1.2" 298 | } 299 | }, 300 | "decompress-response": { 301 | "version": "3.3.0", 302 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 303 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", 304 | "dev": true, 305 | "requires": { 306 | "mimic-response": "^1.0.0" 307 | } 308 | }, 309 | "deep-extend": { 310 | "version": "0.6.0", 311 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 312 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 313 | "dev": true 314 | }, 315 | "defer-to-connect": { 316 | "version": "1.1.3", 317 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", 318 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", 319 | "dev": true 320 | }, 321 | "dot-prop": { 322 | "version": "5.3.0", 323 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", 324 | "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", 325 | "dev": true, 326 | "requires": { 327 | "is-obj": "^2.0.0" 328 | } 329 | }, 330 | "dotenv": { 331 | "version": "10.0.0", 332 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", 333 | "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" 334 | }, 335 | "duplexer3": { 336 | "version": "0.1.4", 337 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 338 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", 339 | "dev": true 340 | }, 341 | "emoji-regex": { 342 | "version": "7.0.3", 343 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 344 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 345 | "dev": true 346 | }, 347 | "end-of-stream": { 348 | "version": "1.4.4", 349 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 350 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 351 | "dev": true, 352 | "requires": { 353 | "once": "^1.4.0" 354 | } 355 | }, 356 | "escape-goat": { 357 | "version": "2.1.1", 358 | "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", 359 | "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", 360 | "dev": true 361 | }, 362 | "event-target-shim": { 363 | "version": "5.0.1", 364 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 365 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" 366 | }, 367 | "fill-range": { 368 | "version": "7.0.1", 369 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 370 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 371 | "dev": true, 372 | "requires": { 373 | "to-regex-range": "^5.0.1" 374 | } 375 | }, 376 | "fsevents": { 377 | "version": "2.3.2", 378 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 379 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 380 | "dev": true, 381 | "optional": true 382 | }, 383 | "get-stream": { 384 | "version": "4.1.0", 385 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 386 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 387 | "dev": true, 388 | "requires": { 389 | "pump": "^3.0.0" 390 | } 391 | }, 392 | "glob-parent": { 393 | "version": "5.1.2", 394 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 395 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 396 | "dev": true, 397 | "requires": { 398 | "is-glob": "^4.0.1" 399 | } 400 | }, 401 | "global-dirs": { 402 | "version": "2.1.0", 403 | "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", 404 | "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", 405 | "dev": true, 406 | "requires": { 407 | "ini": "1.3.7" 408 | } 409 | }, 410 | "got": { 411 | "version": "9.6.0", 412 | "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", 413 | "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", 414 | "dev": true, 415 | "requires": { 416 | "@sindresorhus/is": "^0.14.0", 417 | "@szmarczak/http-timer": "^1.1.2", 418 | "cacheable-request": "^6.0.0", 419 | "decompress-response": "^3.3.0", 420 | "duplexer3": "^0.1.4", 421 | "get-stream": "^4.1.0", 422 | "lowercase-keys": "^1.0.1", 423 | "mimic-response": "^1.0.1", 424 | "p-cancelable": "^1.0.0", 425 | "to-readable-stream": "^1.0.0", 426 | "url-parse-lax": "^3.0.0" 427 | } 428 | }, 429 | "graceful-fs": { 430 | "version": "4.2.8", 431 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 432 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", 433 | "dev": true 434 | }, 435 | "has-flag": { 436 | "version": "3.0.0", 437 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 438 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 439 | "dev": true 440 | }, 441 | "has-yarn": { 442 | "version": "2.1.0", 443 | "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", 444 | "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", 445 | "dev": true 446 | }, 447 | "http-cache-semantics": { 448 | "version": "4.1.0", 449 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 450 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", 451 | "dev": true 452 | }, 453 | "ignore-by-default": { 454 | "version": "1.0.1", 455 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 456 | "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", 457 | "dev": true 458 | }, 459 | "import-lazy": { 460 | "version": "2.1.0", 461 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", 462 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", 463 | "dev": true 464 | }, 465 | "imurmurhash": { 466 | "version": "0.1.4", 467 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 468 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 469 | "dev": true 470 | }, 471 | "ini": { 472 | "version": "1.3.7", 473 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", 474 | "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", 475 | "dev": true 476 | }, 477 | "is-binary-path": { 478 | "version": "2.1.0", 479 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 480 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 481 | "dev": true, 482 | "requires": { 483 | "binary-extensions": "^2.0.0" 484 | } 485 | }, 486 | "is-ci": { 487 | "version": "2.0.0", 488 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", 489 | "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", 490 | "dev": true, 491 | "requires": { 492 | "ci-info": "^2.0.0" 493 | } 494 | }, 495 | "is-extglob": { 496 | "version": "2.1.1", 497 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 498 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 499 | "dev": true 500 | }, 501 | "is-fullwidth-code-point": { 502 | "version": "2.0.0", 503 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 504 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 505 | "dev": true 506 | }, 507 | "is-glob": { 508 | "version": "4.0.1", 509 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 510 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 511 | "dev": true, 512 | "requires": { 513 | "is-extglob": "^2.1.1" 514 | } 515 | }, 516 | "is-installed-globally": { 517 | "version": "0.3.2", 518 | "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", 519 | "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", 520 | "dev": true, 521 | "requires": { 522 | "global-dirs": "^2.0.1", 523 | "is-path-inside": "^3.0.1" 524 | } 525 | }, 526 | "is-npm": { 527 | "version": "4.0.0", 528 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", 529 | "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", 530 | "dev": true 531 | }, 532 | "is-number": { 533 | "version": "7.0.0", 534 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 535 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 536 | "dev": true 537 | }, 538 | "is-obj": { 539 | "version": "2.0.0", 540 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", 541 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", 542 | "dev": true 543 | }, 544 | "is-path-inside": { 545 | "version": "3.0.3", 546 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 547 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 548 | "dev": true 549 | }, 550 | "is-typedarray": { 551 | "version": "1.0.0", 552 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 553 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 554 | "dev": true 555 | }, 556 | "is-yarn-global": { 557 | "version": "0.3.0", 558 | "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", 559 | "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", 560 | "dev": true 561 | }, 562 | "json-buffer": { 563 | "version": "3.0.0", 564 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 565 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", 566 | "dev": true 567 | }, 568 | "keyv": { 569 | "version": "3.1.0", 570 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 571 | "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", 572 | "dev": true, 573 | "requires": { 574 | "json-buffer": "3.0.0" 575 | } 576 | }, 577 | "latest-version": { 578 | "version": "5.1.0", 579 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", 580 | "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", 581 | "dev": true, 582 | "requires": { 583 | "package-json": "^6.3.0" 584 | } 585 | }, 586 | "lowercase-keys": { 587 | "version": "1.0.1", 588 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 589 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", 590 | "dev": true 591 | }, 592 | "make-dir": { 593 | "version": "3.1.0", 594 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 595 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 596 | "dev": true, 597 | "requires": { 598 | "semver": "^6.0.0" 599 | }, 600 | "dependencies": { 601 | "semver": { 602 | "version": "6.3.0", 603 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 604 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 605 | "dev": true 606 | } 607 | } 608 | }, 609 | "mimic-response": { 610 | "version": "1.0.1", 611 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 612 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 613 | "dev": true 614 | }, 615 | "minimatch": { 616 | "version": "3.0.4", 617 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 618 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 619 | "dev": true, 620 | "requires": { 621 | "brace-expansion": "^1.1.7" 622 | } 623 | }, 624 | "minimist": { 625 | "version": "1.2.5", 626 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 627 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 628 | }, 629 | "module-alias": { 630 | "version": "2.2.2", 631 | "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz", 632 | "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==" 633 | }, 634 | "ms": { 635 | "version": "2.1.2", 636 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 637 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 638 | }, 639 | "node-fetch": { 640 | "version": "2.6.1", 641 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 642 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 643 | }, 644 | "nodemon": { 645 | "version": "2.0.12", 646 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.12.tgz", 647 | "integrity": "sha512-egCTmNZdObdBxUBw6ZNwvZ/xzk24CKRs5K6d+5zbmrMr7rOpPmfPeF6OxM3DDpaRx331CQRFEktn+wrFFfBSOA==", 648 | "dev": true, 649 | "requires": { 650 | "chokidar": "^3.2.2", 651 | "debug": "^3.2.6", 652 | "ignore-by-default": "^1.0.1", 653 | "minimatch": "^3.0.4", 654 | "pstree.remy": "^1.1.7", 655 | "semver": "^5.7.1", 656 | "supports-color": "^5.5.0", 657 | "touch": "^3.1.0", 658 | "undefsafe": "^2.0.3", 659 | "update-notifier": "^4.1.0" 660 | }, 661 | "dependencies": { 662 | "debug": { 663 | "version": "3.2.7", 664 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 665 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 666 | "dev": true, 667 | "requires": { 668 | "ms": "^2.1.1" 669 | } 670 | } 671 | } 672 | }, 673 | "nopt": { 674 | "version": "1.0.10", 675 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 676 | "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", 677 | "dev": true, 678 | "requires": { 679 | "abbrev": "1" 680 | } 681 | }, 682 | "normalize-path": { 683 | "version": "3.0.0", 684 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 685 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 686 | "dev": true 687 | }, 688 | "normalize-url": { 689 | "version": "4.5.1", 690 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", 691 | "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", 692 | "dev": true 693 | }, 694 | "once": { 695 | "version": "1.4.0", 696 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 697 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 698 | "dev": true, 699 | "requires": { 700 | "wrappy": "1" 701 | } 702 | }, 703 | "p-cancelable": { 704 | "version": "1.1.0", 705 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", 706 | "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", 707 | "dev": true 708 | }, 709 | "p-timeout": { 710 | "version": "4.1.0", 711 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz", 712 | "integrity": "sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==" 713 | }, 714 | "package-json": { 715 | "version": "6.5.0", 716 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", 717 | "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", 718 | "dev": true, 719 | "requires": { 720 | "got": "^9.6.0", 721 | "registry-auth-token": "^4.0.0", 722 | "registry-url": "^5.0.0", 723 | "semver": "^6.2.0" 724 | }, 725 | "dependencies": { 726 | "semver": { 727 | "version": "6.3.0", 728 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 729 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 730 | "dev": true 731 | } 732 | } 733 | }, 734 | "picomatch": { 735 | "version": "2.3.0", 736 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 737 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 738 | "dev": true 739 | }, 740 | "prepend-http": { 741 | "version": "2.0.0", 742 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", 743 | "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", 744 | "dev": true 745 | }, 746 | "pstree.remy": { 747 | "version": "1.1.8", 748 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 749 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", 750 | "dev": true 751 | }, 752 | "pump": { 753 | "version": "3.0.0", 754 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 755 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 756 | "dev": true, 757 | "requires": { 758 | "end-of-stream": "^1.1.0", 759 | "once": "^1.3.1" 760 | } 761 | }, 762 | "pupa": { 763 | "version": "2.1.1", 764 | "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", 765 | "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", 766 | "dev": true, 767 | "requires": { 768 | "escape-goat": "^2.0.0" 769 | } 770 | }, 771 | "rc": { 772 | "version": "1.2.8", 773 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 774 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 775 | "dev": true, 776 | "requires": { 777 | "deep-extend": "^0.6.0", 778 | "ini": "~1.3.0", 779 | "minimist": "^1.2.0", 780 | "strip-json-comments": "~2.0.1" 781 | } 782 | }, 783 | "readdirp": { 784 | "version": "3.6.0", 785 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 786 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 787 | "dev": true, 788 | "requires": { 789 | "picomatch": "^2.2.1" 790 | } 791 | }, 792 | "registry-auth-token": { 793 | "version": "4.2.1", 794 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", 795 | "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", 796 | "dev": true, 797 | "requires": { 798 | "rc": "^1.2.8" 799 | } 800 | }, 801 | "registry-url": { 802 | "version": "5.1.0", 803 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", 804 | "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", 805 | "dev": true, 806 | "requires": { 807 | "rc": "^1.2.8" 808 | } 809 | }, 810 | "responselike": { 811 | "version": "1.0.2", 812 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", 813 | "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", 814 | "dev": true, 815 | "requires": { 816 | "lowercase-keys": "^1.0.0" 817 | } 818 | }, 819 | "safe-compare": { 820 | "version": "1.1.4", 821 | "resolved": "https://registry.npmjs.org/safe-compare/-/safe-compare-1.1.4.tgz", 822 | "integrity": "sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ==", 823 | "requires": { 824 | "buffer-alloc": "^1.2.0" 825 | } 826 | }, 827 | "sandwich-stream": { 828 | "version": "2.0.2", 829 | "resolved": "https://registry.npmjs.org/sandwich-stream/-/sandwich-stream-2.0.2.tgz", 830 | "integrity": "sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ==" 831 | }, 832 | "semver": { 833 | "version": "5.7.1", 834 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 835 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 836 | "dev": true 837 | }, 838 | "semver-diff": { 839 | "version": "3.1.1", 840 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", 841 | "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", 842 | "dev": true, 843 | "requires": { 844 | "semver": "^6.3.0" 845 | }, 846 | "dependencies": { 847 | "semver": { 848 | "version": "6.3.0", 849 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 850 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 851 | "dev": true 852 | } 853 | } 854 | }, 855 | "signal-exit": { 856 | "version": "3.0.3", 857 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 858 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 859 | "dev": true 860 | }, 861 | "string-width": { 862 | "version": "4.2.2", 863 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 864 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 865 | "dev": true, 866 | "requires": { 867 | "emoji-regex": "^8.0.0", 868 | "is-fullwidth-code-point": "^3.0.0", 869 | "strip-ansi": "^6.0.0" 870 | }, 871 | "dependencies": { 872 | "ansi-regex": { 873 | "version": "5.0.0", 874 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 875 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 876 | "dev": true 877 | }, 878 | "emoji-regex": { 879 | "version": "8.0.0", 880 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 881 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 882 | "dev": true 883 | }, 884 | "is-fullwidth-code-point": { 885 | "version": "3.0.0", 886 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 887 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 888 | "dev": true 889 | }, 890 | "strip-ansi": { 891 | "version": "6.0.0", 892 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 893 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 894 | "dev": true, 895 | "requires": { 896 | "ansi-regex": "^5.0.0" 897 | } 898 | } 899 | } 900 | }, 901 | "strip-ansi": { 902 | "version": "5.2.0", 903 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 904 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 905 | "dev": true, 906 | "requires": { 907 | "ansi-regex": "^4.1.0" 908 | } 909 | }, 910 | "strip-json-comments": { 911 | "version": "2.0.1", 912 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 913 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 914 | "dev": true 915 | }, 916 | "supports-color": { 917 | "version": "5.5.0", 918 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 919 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 920 | "dev": true, 921 | "requires": { 922 | "has-flag": "^3.0.0" 923 | } 924 | }, 925 | "telegraf": { 926 | "version": "4.4.1", 927 | "resolved": "https://registry.npmjs.org/telegraf/-/telegraf-4.4.1.tgz", 928 | "integrity": "sha512-jxV8fC/K6abcUTlhy/l8txJAmEJIkJoDu/cN0yXOJWLp9csfLIp+cD4qlwJ6ko+4EgOJmNZvWK7Tr2dxKolJQQ==", 929 | "requires": { 930 | "abort-controller": "^3.0.0", 931 | "debug": "^4.3.1", 932 | "minimist": "^1.2.5", 933 | "module-alias": "^2.2.2", 934 | "node-fetch": "^2.6.1", 935 | "p-timeout": "^4.1.0", 936 | "safe-compare": "^1.1.4", 937 | "sandwich-stream": "^2.0.2", 938 | "typegram": "^3.4.2" 939 | } 940 | }, 941 | "term-size": { 942 | "version": "2.2.1", 943 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", 944 | "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", 945 | "dev": true 946 | }, 947 | "to-readable-stream": { 948 | "version": "1.0.0", 949 | "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", 950 | "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", 951 | "dev": true 952 | }, 953 | "to-regex-range": { 954 | "version": "5.0.1", 955 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 956 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 957 | "dev": true, 958 | "requires": { 959 | "is-number": "^7.0.0" 960 | } 961 | }, 962 | "touch": { 963 | "version": "3.1.0", 964 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 965 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", 966 | "dev": true, 967 | "requires": { 968 | "nopt": "~1.0.10" 969 | } 970 | }, 971 | "type-fest": { 972 | "version": "0.8.1", 973 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 974 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 975 | "dev": true 976 | }, 977 | "typedarray-to-buffer": { 978 | "version": "3.1.5", 979 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 980 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 981 | "dev": true, 982 | "requires": { 983 | "is-typedarray": "^1.0.0" 984 | } 985 | }, 986 | "typegram": { 987 | "version": "3.4.3", 988 | "resolved": "https://registry.npmjs.org/typegram/-/typegram-3.4.3.tgz", 989 | "integrity": "sha512-pH0TQJzCWM2+7y6yiBoQVNt7PO9ZvAu/lQukVx4sm68FIBBZEBWI+2MzuMcdbwrD5mD5NrEMAyml9N6DupUZag==" 990 | }, 991 | "undefsafe": { 992 | "version": "2.0.3", 993 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", 994 | "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", 995 | "dev": true, 996 | "requires": { 997 | "debug": "^2.2.0" 998 | }, 999 | "dependencies": { 1000 | "debug": { 1001 | "version": "2.6.9", 1002 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1003 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1004 | "dev": true, 1005 | "requires": { 1006 | "ms": "2.0.0" 1007 | } 1008 | }, 1009 | "ms": { 1010 | "version": "2.0.0", 1011 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1012 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1013 | "dev": true 1014 | } 1015 | } 1016 | }, 1017 | "unique-string": { 1018 | "version": "2.0.0", 1019 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", 1020 | "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", 1021 | "dev": true, 1022 | "requires": { 1023 | "crypto-random-string": "^2.0.0" 1024 | } 1025 | }, 1026 | "update-notifier": { 1027 | "version": "4.1.3", 1028 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", 1029 | "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", 1030 | "dev": true, 1031 | "requires": { 1032 | "boxen": "^4.2.0", 1033 | "chalk": "^3.0.0", 1034 | "configstore": "^5.0.1", 1035 | "has-yarn": "^2.1.0", 1036 | "import-lazy": "^2.1.0", 1037 | "is-ci": "^2.0.0", 1038 | "is-installed-globally": "^0.3.1", 1039 | "is-npm": "^4.0.0", 1040 | "is-yarn-global": "^0.3.0", 1041 | "latest-version": "^5.0.0", 1042 | "pupa": "^2.0.1", 1043 | "semver-diff": "^3.1.1", 1044 | "xdg-basedir": "^4.0.0" 1045 | } 1046 | }, 1047 | "url-parse-lax": { 1048 | "version": "3.0.0", 1049 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", 1050 | "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", 1051 | "dev": true, 1052 | "requires": { 1053 | "prepend-http": "^2.0.0" 1054 | } 1055 | }, 1056 | "widest-line": { 1057 | "version": "3.1.0", 1058 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 1059 | "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", 1060 | "dev": true, 1061 | "requires": { 1062 | "string-width": "^4.0.0" 1063 | } 1064 | }, 1065 | "wrappy": { 1066 | "version": "1.0.2", 1067 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1068 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1069 | "dev": true 1070 | }, 1071 | "write-file-atomic": { 1072 | "version": "3.0.3", 1073 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 1074 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 1075 | "dev": true, 1076 | "requires": { 1077 | "imurmurhash": "^0.1.4", 1078 | "is-typedarray": "^1.0.0", 1079 | "signal-exit": "^3.0.2", 1080 | "typedarray-to-buffer": "^3.1.5" 1081 | } 1082 | }, 1083 | "xdg-basedir": { 1084 | "version": "4.0.0", 1085 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", 1086 | "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", 1087 | "dev": true 1088 | } 1089 | } 1090 | } 1091 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "testITDbot", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "dev": "nodemon inxex.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "dotenv": "^10.0.0", 15 | "telegraf": "^4.4.1" 16 | }, 17 | "devDependencies": { 18 | "nodemon": "^2.0.12" 19 | } 20 | } --------------------------------------------------------------------------------