telekit-lib 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PUBLISHING.md +52 -0
- package/PUBLISH_GUIDE.md +52 -0
- package/README.md +45 -0
- package/dist/index.d.ts +117 -0
- package/dist/index.js +356 -0
- package/docs/index.html +675 -0
- package/examples/database_bot.ts +77 -0
- package/examples/simple_bot.ts +18 -0
- package/package.json +29 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { TeleKit, LocalDB, Keyboard } from '../src';
|
|
2
|
+
|
|
3
|
+
// 1. Инициализируем бота и базу данных
|
|
4
|
+
const bot = new TeleKit(process.env.BOT_TOKEN || '');
|
|
5
|
+
|
|
6
|
+
// База данных товаров (хранится в products.json)
|
|
7
|
+
interface Product {
|
|
8
|
+
id: number;
|
|
9
|
+
name: string;
|
|
10
|
+
price: number;
|
|
11
|
+
}
|
|
12
|
+
const db = new LocalDB<Product>('products.json');
|
|
13
|
+
|
|
14
|
+
// Заполним базу при старте, если пустая
|
|
15
|
+
if (db.getAll().length === 0) {
|
|
16
|
+
db.push({ id: 1, name: '🍎 Яблоко', price: 100 });
|
|
17
|
+
db.push({ id: 2, name: '🍌 Банан', price: 150 });
|
|
18
|
+
db.push({ id: 3, name: '🍒 Вишня', price: 300 });
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// 2. Логика магазина
|
|
22
|
+
|
|
23
|
+
bot.command('start', async (ctx) => {
|
|
24
|
+
await ctx.reply('Добро пожаловать в магазин фруктов! 🍎');
|
|
25
|
+
await sendCatalog(ctx);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
async function sendCatalog(ctx: any) {
|
|
29
|
+
// Получаем все товары из базы
|
|
30
|
+
const products = db.getAll();
|
|
31
|
+
|
|
32
|
+
// Генерируем кнопки для каждого товара
|
|
33
|
+
const buttons = products.map(p =>
|
|
34
|
+
[Keyboard.callback(`${p.name} - ${p.price}₽`, `buy_${p.id}`)]
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
await ctx.reply('Что хотите купить?', {
|
|
38
|
+
reply_markup: Keyboard.inline(buttons)
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Обрабатываем нажатие "Купить" (buy_1, buy_2 ...)
|
|
43
|
+
bot.onCallback(/^buy_(\d+)$/, async (ctx) => {
|
|
44
|
+
const productId = Number(ctx.callbackData?.split('_')[1]);
|
|
45
|
+
|
|
46
|
+
// Ищем товар в базе
|
|
47
|
+
const product = await db.findOne(p => p.id === productId);
|
|
48
|
+
|
|
49
|
+
if (product) {
|
|
50
|
+
await ctx.answerCallback(`Вы выбрали: ${product.name}`);
|
|
51
|
+
await ctx.reply(`✅ Вы успешно купили ${product.name} за ${product.price}₽`);
|
|
52
|
+
} else {
|
|
53
|
+
await ctx.answerCallback('Товар не найден', true);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// Админская команда: Добавить товар
|
|
58
|
+
// Пример: /add 🍐 Груша-200
|
|
59
|
+
bot.onText(/^\/add (.+)-(\d+)$/, async (ctx) => {
|
|
60
|
+
// Парсим ввод (Регулярные выражения - это мощь!)
|
|
61
|
+
const match = ctx.text?.match(/^\/add (.+)-(\d+)$/);
|
|
62
|
+
if (!match) return;
|
|
63
|
+
|
|
64
|
+
const name = match[1];
|
|
65
|
+
const price = Number(match[2]);
|
|
66
|
+
|
|
67
|
+
// Сохраняем в базу LocalDB
|
|
68
|
+
await db.push({
|
|
69
|
+
id: Date.now(), // Генерируем ID
|
|
70
|
+
name,
|
|
71
|
+
price
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
await ctx.reply(`Добавлен товар: ${name} за ${price}₽`);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
bot.start();
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TeleKit, Keyboard } from '../src';
|
|
2
|
+
|
|
3
|
+
const bot = new TeleKit(process.env.BOT_TOKEN || '');
|
|
4
|
+
|
|
5
|
+
// Меню
|
|
6
|
+
bot.setCommands([{ command: 'start', description: 'Запустить' }]);
|
|
7
|
+
|
|
8
|
+
bot.command('start', (ctx) => {
|
|
9
|
+
ctx.reply('Привет! Это самый простой бот.', {
|
|
10
|
+
reply_markup: Keyboard.reply(['Покажи котика'])
|
|
11
|
+
})
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
bot.onText('Покажи котика', (ctx) => {
|
|
15
|
+
ctx.reply('🐈 Мяу!');
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
bot.start();
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "telekit-lib",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Профессиональный TypeScript фреймворк для Telegram ботов со встроенной LocalDB",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"start": "node dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [
|
|
12
|
+
"telegram",
|
|
13
|
+
"bot",
|
|
14
|
+
"typescript",
|
|
15
|
+
"telekit",
|
|
16
|
+
"framework",
|
|
17
|
+
"database"
|
|
18
|
+
],
|
|
19
|
+
"author": "TaHel-UDev",
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"axios": "^1.13.2",
|
|
23
|
+
"typegram": "^5.2.0"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/node": "^20.0.0",
|
|
27
|
+
"typescript": "^5.0.0"
|
|
28
|
+
}
|
|
29
|
+
}
|