@2byte/tgbot-framework 1.0.5 → 1.0.7
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/README.md +300 -300
- package/bin/2byte-cli.ts +97 -97
- package/package.json +54 -54
- package/src/cli/CreateBotCommand.ts +181 -181
- package/src/cli/GenerateCommand.ts +195 -195
- package/src/cli/InitCommand.ts +107 -107
- package/src/cli/TgAccountManager.ts +50 -50
- package/src/console/migrate.ts +82 -82
- package/src/core/ApiService.ts +20 -20
- package/src/core/ApiServiceManager.ts +63 -63
- package/src/core/App.ts +1157 -1143
- package/src/core/BotArtisan.ts +79 -79
- package/src/core/BotMigration.ts +30 -30
- package/src/core/BotSeeder.ts +66 -66
- package/src/core/Model.ts +84 -84
- package/src/core/utils.ts +2 -2
- package/src/illumination/Artisan.ts +149 -149
- package/src/illumination/InlineKeyboard.ts +61 -61
- package/src/illumination/Message2Byte.ts +255 -255
- package/src/illumination/Message2ByteLiveProgressive.ts +278 -278
- package/src/illumination/Message2bytePool.ts +107 -107
- package/src/illumination/Migration.ts +186 -186
- package/src/illumination/RunSectionRoute.ts +85 -85
- package/src/illumination/Section.ts +410 -410
- package/src/illumination/SectionComponent.ts +64 -64
- package/src/illumination/Telegraf2byteContext.ts +32 -32
- package/src/index.ts +42 -42
- package/src/libs/TelegramAccountControl.ts +1140 -1140
- package/src/libs/TgSender.ts +53 -53
- package/src/models/Model.ts +67 -67
- package/src/models/Proxy.ts +217 -217
- package/src/models/TgAccount.ts +362 -362
- package/src/models/index.ts +2 -2
- package/src/types.ts +191 -191
- package/src/user/UserModel.ts +297 -297
- package/src/user/UserStore.ts +119 -119
- package/src/workflow/services/MassSendApiService.ts +80 -80
- package/templates/bot/.env.example +34 -23
- package/templates/bot/artisan.ts +8 -8
- package/templates/bot/bot.ts +82 -82
- package/templates/bot/database/dbConnector.ts +4 -4
- package/templates/bot/database/migrate.ts +9 -9
- package/templates/bot/database/migrations/001_create_users.sql +18 -18
- package/templates/bot/database/migrations/007_proxy.sql +27 -27
- package/templates/bot/database/migrations/008_tg_accounts.sql +32 -32
- package/templates/bot/database/seed.ts +14 -14
- package/templates/bot/docs/CLI_SERVICES.md +536 -536
- package/templates/bot/docs/INPUT_SYSTEM.md +211 -211
- package/templates/bot/docs/SERVICE_EXAMPLES.md +384 -384
- package/templates/bot/docs/TASK_SYSTEM.md +156 -156
- package/templates/bot/models/Model.ts +7 -7
- package/templates/bot/models/index.ts +1 -1
- package/templates/bot/package.json +30 -30
- package/templates/bot/sectionList.ts +9 -9
- package/templates/bot/sections/ExampleInputSection.ts +85 -85
- package/templates/bot/sections/ExampleLiveTaskerSection.ts +60 -60
- package/templates/bot/sections/HomeSection.ts +63 -63
- package/templates/bot/workflow/services/ExampleService.ts +23 -23
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
-- UP
|
|
2
|
-
CREATE TABLE IF NOT EXISTS `users` (
|
|
3
|
-
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
4
|
-
`user_refid` INTEGER DEFAULT 0,
|
|
5
|
-
`role` TEXT DEFAULT 'user',
|
|
6
|
-
`tg_id` INTEGER NOT NULL UNIQUE,
|
|
7
|
-
`tg_username` TEXT,
|
|
8
|
-
`tg_full_name` TEXT GENERATED ALWAYS AS (trim(coalesce(tg_first_name, '') || ' ' || coalesce(tg_last_name, ''))) VIRTUAL,
|
|
9
|
-
`tg_first_name` TEXT,
|
|
10
|
-
`tg_last_name` TEXT,
|
|
11
|
-
`is_banned_by_user` INTEGER DEFAULT 0,
|
|
12
|
-
`is_banned_by_admin` INTEGER DEFAULT 0,
|
|
13
|
-
`banned_reason` TEXT,
|
|
14
|
-
`language` TEXT DEFAULT 'en',
|
|
15
|
-
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
16
|
-
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
17
|
-
);
|
|
18
|
-
-- DOWN
|
|
1
|
+
-- UP
|
|
2
|
+
CREATE TABLE IF NOT EXISTS `users` (
|
|
3
|
+
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
4
|
+
`user_refid` INTEGER DEFAULT 0,
|
|
5
|
+
`role` TEXT DEFAULT 'user',
|
|
6
|
+
`tg_id` INTEGER NOT NULL UNIQUE,
|
|
7
|
+
`tg_username` TEXT,
|
|
8
|
+
`tg_full_name` TEXT GENERATED ALWAYS AS (trim(coalesce(tg_first_name, '') || ' ' || coalesce(tg_last_name, ''))) VIRTUAL,
|
|
9
|
+
`tg_first_name` TEXT,
|
|
10
|
+
`tg_last_name` TEXT,
|
|
11
|
+
`is_banned_by_user` INTEGER DEFAULT 0,
|
|
12
|
+
`is_banned_by_admin` INTEGER DEFAULT 0,
|
|
13
|
+
`banned_reason` TEXT,
|
|
14
|
+
`language` TEXT DEFAULT 'en',
|
|
15
|
+
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
16
|
+
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
17
|
+
);
|
|
18
|
+
-- DOWN
|
|
19
19
|
DROP TABLE IF EXISTS `users`;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
-- UP
|
|
2
|
-
CREATE TABLE IF NOT EXISTS proxy (
|
|
3
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
4
|
-
ip TEXT NOT NULL,
|
|
5
|
-
port INTEGER NOT NULL,
|
|
6
|
-
username TEXT,
|
|
7
|
-
password TEXT,
|
|
8
|
-
secret TEXT,
|
|
9
|
-
socksType INTEGER CHECK(socksType IN (4, 5)),
|
|
10
|
-
MTProxy INTEGER DEFAULT 0,
|
|
11
|
-
country TEXT,
|
|
12
|
-
status INTEGER DEFAULT 0,
|
|
13
|
-
source TEXT,
|
|
14
|
-
last_check DATETIME,
|
|
15
|
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
16
|
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
CREATE TRIGGER IF NOT EXISTS proxy_updated_at
|
|
20
|
-
AFTER UPDATE ON proxy
|
|
21
|
-
FOR EACH ROW
|
|
22
|
-
BEGIN
|
|
23
|
-
UPDATE proxy SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
|
|
24
|
-
END;
|
|
25
|
-
|
|
26
|
-
-- DOWN
|
|
27
|
-
DROP TABLE IF EXISTS proxy;
|
|
1
|
+
-- UP
|
|
2
|
+
CREATE TABLE IF NOT EXISTS proxy (
|
|
3
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
4
|
+
ip TEXT NOT NULL,
|
|
5
|
+
port INTEGER NOT NULL,
|
|
6
|
+
username TEXT,
|
|
7
|
+
password TEXT,
|
|
8
|
+
secret TEXT,
|
|
9
|
+
socksType INTEGER CHECK(socksType IN (4, 5)),
|
|
10
|
+
MTProxy INTEGER DEFAULT 0,
|
|
11
|
+
country TEXT,
|
|
12
|
+
status INTEGER DEFAULT 0,
|
|
13
|
+
source TEXT,
|
|
14
|
+
last_check DATETIME,
|
|
15
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
16
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
CREATE TRIGGER IF NOT EXISTS proxy_updated_at
|
|
20
|
+
AFTER UPDATE ON proxy
|
|
21
|
+
FOR EACH ROW
|
|
22
|
+
BEGIN
|
|
23
|
+
UPDATE proxy SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
|
|
24
|
+
END;
|
|
25
|
+
|
|
26
|
+
-- DOWN
|
|
27
|
+
DROP TABLE IF EXISTS proxy;
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
-- UP
|
|
2
|
-
CREATE TABLE IF NOT EXISTS tg_accounts (
|
|
3
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
4
|
-
phone TEXT NOT NULL UNIQUE,
|
|
5
|
-
session TEXT NULL,
|
|
6
|
-
password TEXT NULL,
|
|
7
|
-
country TEXT NULL,
|
|
8
|
-
proxy_id INTEGER NULL,
|
|
9
|
-
status INTEGER DEFAULT 0,
|
|
10
|
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
11
|
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
12
|
-
);
|
|
13
|
-
|
|
14
|
-
-- Создаем индекс для быстрого поиска по номеру телефона
|
|
15
|
-
CREATE INDEX IF NOT EXISTS idx_accounts_phone ON accounts(phone);
|
|
16
|
-
|
|
17
|
-
-- Создаем индекс для фильтрации по статусу
|
|
18
|
-
CREATE INDEX IF NOT EXISTS idx_accounts_status ON accounts(status);
|
|
19
|
-
|
|
20
|
-
-- Создаем индекс для фильтрации по стране
|
|
21
|
-
CREATE INDEX IF NOT EXISTS idx_accounts_country ON accounts(country);
|
|
22
|
-
|
|
23
|
-
-- Создаем триггер для автоматического обновления updated_at
|
|
24
|
-
CREATE TRIGGER IF NOT EXISTS accounts_updated_at
|
|
25
|
-
AFTER UPDATE ON accounts
|
|
26
|
-
FOR EACH ROW
|
|
27
|
-
BEGIN
|
|
28
|
-
UPDATE accounts SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
|
|
29
|
-
END;
|
|
30
|
-
|
|
31
|
-
-- DOWN
|
|
32
|
-
DROP TABLE IF EXISTS tg_accounts;
|
|
1
|
+
-- UP
|
|
2
|
+
CREATE TABLE IF NOT EXISTS tg_accounts (
|
|
3
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
4
|
+
phone TEXT NOT NULL UNIQUE,
|
|
5
|
+
session TEXT NULL,
|
|
6
|
+
password TEXT NULL,
|
|
7
|
+
country TEXT NULL,
|
|
8
|
+
proxy_id INTEGER NULL,
|
|
9
|
+
status INTEGER DEFAULT 0,
|
|
10
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
11
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
-- Создаем индекс для быстрого поиска по номеру телефона
|
|
15
|
+
CREATE INDEX IF NOT EXISTS idx_accounts_phone ON accounts(phone);
|
|
16
|
+
|
|
17
|
+
-- Создаем индекс для фильтрации по статусу
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_accounts_status ON accounts(status);
|
|
19
|
+
|
|
20
|
+
-- Создаем индекс для фильтрации по стране
|
|
21
|
+
CREATE INDEX IF NOT EXISTS idx_accounts_country ON accounts(country);
|
|
22
|
+
|
|
23
|
+
-- Создаем триггер для автоматического обновления updated_at
|
|
24
|
+
CREATE TRIGGER IF NOT EXISTS accounts_updated_at
|
|
25
|
+
AFTER UPDATE ON accounts
|
|
26
|
+
FOR EACH ROW
|
|
27
|
+
BEGIN
|
|
28
|
+
UPDATE accounts SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
|
|
29
|
+
END;
|
|
30
|
+
|
|
31
|
+
-- DOWN
|
|
32
|
+
DROP TABLE IF EXISTS tg_accounts;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { BotSeeder } from '@2byte/tgbot-framework';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
|
|
4
|
-
// Импортируйте здесь ваши сидеры
|
|
5
|
-
// import { seedUsers } from './seeds/users';
|
|
6
|
-
|
|
7
|
-
const seeder = new BotSeeder({
|
|
8
|
-
botPath: __dirname,
|
|
9
|
-
databasePath: path.join(__dirname, 'database.sqlite'),
|
|
10
|
-
seeders: [
|
|
11
|
-
// seedUsers,
|
|
12
|
-
]
|
|
13
|
-
});
|
|
14
|
-
|
|
1
|
+
import { BotSeeder } from '@2byte/tgbot-framework';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
|
|
4
|
+
// Импортируйте здесь ваши сидеры
|
|
5
|
+
// import { seedUsers } from './seeds/users';
|
|
6
|
+
|
|
7
|
+
const seeder = new BotSeeder({
|
|
8
|
+
botPath: __dirname,
|
|
9
|
+
databasePath: path.join(__dirname, 'database.sqlite'),
|
|
10
|
+
seeders: [
|
|
11
|
+
// seedUsers,
|
|
12
|
+
]
|
|
13
|
+
});
|
|
14
|
+
|
|
15
15
|
seeder.run();
|