Дополнение для ботов на телеграфе.
npm install telegraf-opexCreated by OpexDev
Installation:
npm install telegraf-opex
Require:
``js`
const { OpexSQLite3Base, OpexMySQLBase } = require('telegraf-opex');
Config:
`js`
var config = {
path: "./db.sqlite",//для SQLite3
mysql: { //для MySQL
host: "mysqlserver.com",
user: "user",
password: "pass",
database: "db"
},
cooldown: 1,//cooldown в секундах
tr: {
ru: {
ratelimit: {
text: '❌Пожалуйста, попробуйте позже!'
}
},
en: {
ratelimit: {
text: '❌Please try again later!'
}
}
}
}
MySQL example:
`js
async function run(){
const MySQL = require('mysql-database');
const database = new MySQL()
const db = await database.connect(config.mysql)
db.on('connected',(connection) => {
log('Database Connected');
})
setInterval(async () => {
await db.query('SELECT * FROM users')
}, 10 * 1000)
//чтобы было постоянное соединение
const ob = new OpexMySQLBase(MySQL_config,true,true, true,db)
bot.use(ob.middleware)
//other
}
run()
`
SQLite example
`js
const ob = new OpexSQLite3Base(SQLite3_config,true,true,true)
bot.use(ob.middleware)
//other
`
Class params
`js`
new Class(
объект config (пример есть в самом начале),
saveRequests true/false,
//Разрешает сохранять логи времени комманд
updateUsernames true/false,
//Разрешает обновлять некоторые данные пользователей в таблице users
updateBotInfo true/false,
//Разрешает обновлять данные ботов в таблице bots
db
//mysql connecting
)
но в начале надо использовать команду ob.setTables() для создания нужных таблиц
Создать таблицы:
`js
//sqlite3
ob.setTables()
//создаёт 5 таблиц: users,admins,blacklist,bots,requests
//mysql
await ob.setTables()
``
Удалить таблицы:js
//sqlite3
ob.deleteTables()
//удаляет все таблицы
//mysql
await ob.deleteTables()
``
Получить список таблиц:js
//sqlite3
ob.tables(?sys)
//mysql
await ob.tables()
`
- sys: true/false
Показывает также системные таблицы
SQL запрос:
`js
//sqlite3
ob.query(sql)
.run()
.bind()
.all()
.get()
//mysql
await ob.query(sql)
`
- .run()
Запустить комманду бех возврата данных
- .all()
Запустить комманду с возвратом множества объектов (массива объектов)
- .get()
Запустить крмманду с возвратом одного объекта (если ответ - массив объектов, то вернёт первый объект)
- .bind(['param1','param2'])
Добавить значения переменных указанных в sql как ?
`js`
//в mysql нету .run(),.all(),.get(),.bind(), там просто await db.query(sql)`
Получить все данные с таблицы:js`
ob.vget(table,?var)
- table
Имя таблицы
- var
Имя переменной которые хочешь собрать
По умолчанию: * (всё)
Получить данные по id:
`js`
ob.uget(table,id,?var)
- table
Имя таблицы
- id
Айди пользователя
- var
Имя переменной которую хочешь получить
По умолчанию: * (всё)
Сменить статус подписки:
`js
//sqlite3
ob.subset(ctx,?sub)
//возвращает 0 или 1
//mysql
await ob.subset(ctx,?sub)
`
Сменить язык:
`js
//sqlite3
ob.setLang(ctx)
//возвращает язык на который был сменён
//mysql
await ob.setLang(ctx)
``
Получить текущий язык:js
//sqlite3
ob.getLang(ctx)
//mysql
await ob.getLang(ctx)
`
Длина массива:
`js
ob.count(array)
//пример с opex функциями
count(await usersList(5433304088))
//покажет количество пользователей бота
`
Получить список ботов (+фильтр по user_id)
`js
//sqlite3
ob.botsList(?user_id)
//mysql
await ob.botsList(?user_id)
`
Получить список пользователей (+фильтр по bot_id)
`js
//sqlite3
ob.usersList(?bot_id)
//mysql
await ob.usersList(?bot_id)
`
Получить список последних зарегестрированных пользователей за n дней
`js`
//sqlite3
ob.lastUsers(days)
Получить последних список запросов (+фильтр по user_id &/ bot_id)
`js
//sqlite3
ob.lastRequests({?user_id,?bot_id})
//mysql
await ob.lastRequests({?user_id,?bot_id})
``