init commit

This commit is contained in:
AntoXa PRO 2024-11-27 15:43:39 +03:00
commit d76e02b33f
6 changed files with 97 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
.env
dist
node_modules
package-lock.json

9
.prettierrc Normal file
View File

@ -0,0 +1,9 @@
{
"useTabs": true,
"tabWidth": 2,
"singleQuote": true,
"semi": false,
"trailingComma": "none",
"arrowParens": "avoid",
"printWidth": 79
}

19
package.json Normal file
View File

@ -0,0 +1,19 @@
{
"name": "tg-bot",
"version": "1.0.0",
"module": "./dist/index.mjs",
"main": "./dist/index.umd.js",
"scripts": {
"start": "node .",
"build": "vite build"
},
"dependencies": {
"dotenv": "^16.4.5",
"telegraf": "^4.16.3"
},
"devDependencies": {
"@types/node": "^22.10.0",
"prettier": "^3.4.1",
"vite": "^6.0.1"
}
}

33
src/index.ts Normal file
View File

@ -0,0 +1,33 @@
// Импорт сторонних библиотек.
import * as dotenv from 'dotenv'
import { Telegraf } from 'telegraf'
// Главная функция приложения (Точка входа).
const main = () => {
try {
// Инициализируем библиотеку для переменных окружения
// Что бы мы могли их читать из файла .env
dotenv.config()
// Токен.
const token = process.env.TELEGRAM_TOKEN
if (!token) throw new Error('Токен не найден!')
// Создание экземпляра бота
const bot = new Telegraf(token)
// Обработчик команды /start
bot.start(async ctx => {
await ctx.reply('Привет!')
})
// Запуск бота
bot.launch()
} catch (e) {
// Обработка ошибок.
console.log('Ошибка:', e)
}
}
// Старт приложения.
main()

16
tsconfig.json Normal file
View File

@ -0,0 +1,16 @@
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"paths": {
"~/*": [
"./src/*"
]
},
"strict": true,
"moduleResolution": "node"
},
"include": ["src/**/*.ts"]
}

16
vite.config.ts Normal file
View File

@ -0,0 +1,16 @@
import { resolve } from 'node:path'
import { defineConfig } from 'vite'
export default defineConfig({
resolve: { alias: { '~': resolve(__dirname, './src') } },
build: {
lib: {
name: 'tg-bot',
fileName: 'index',
entry: resolve(__dirname, 'src', 'index.ts')
},
rollupOptions: {
external: ['telegraf', 'dotenv']
}
}
})