Простой Telegram-бот для записей, хранения и просмотра результатов тренировок
WorkoutStorageBot — умеет:
- Хранить результаты тренировок, разбивая их на циклы и дни
- Показывать последние данные тренировок, а так же фильтровать результаты по дням
- Экспортировать данные тренировок в .xlsx и .json файлы
- Динамически настраивать циклы, дни, упражнения
Чтобы быстро запустить бота, следуйте этим шагам:
git clone https://github.com/Grawter/WorkoutStorageBot.git
cd WorkoutStorageBot/WorkoutStorageBot/Application/StartConfiguration
nano appsettings.json
Укажите токен своего телеграм бота в Bot->Token
{
"DB": {
"Server": "",
"Database": "test.db",
"UserName": "",
"Password": ""
},
"Bot": {
"Token": "<Your telegram bot token>",
"WhiteListIsEnable": "False",
"OwnersChatIDs": [ "0" ],
"IsNeedCacheContext": "False",
"IsNeedLimits": "False"
},
"Notifications": {
"NotifyOwnersAboutCriticalErrors": "False",
"NotifyOwnersAboutRuntimeErrors": "False"
},
"LogInfo": {
"MainRuleLog": {
"DBLogLevels": [ "Error", "Critical" ],
"ConsoleLogLevels": [ "All" ]
}
}
}
cd ../..
dotnet build
dotnet run
{
// Настроить считывание настроек под свои нужды можно в ConfigurationData -> GetConfiguration
/*
Настройки подключения к БД.
По-умолчанию, используется SQLite, в случае необходимости можно поменять DBProvider: Program -> GetEntityContext.
В случае необходимости можно написать свою реализацию строки подключения: ConfigurationData -> DbSettings -> ConnectionString.
Server - Сервер DB [Необязательно]
Database - Название DB [Обязательно]
UserName - УЗ для подключения к DB [Необязательно]
Password - для от УЗ для подключения к DB [Необязательно]
После инициализации всех зависимостей значения UserName и Password будут затёрты из переменных. Подробнее: ConfigurationManager -> SetCensorToDBSettings.
*/
"DB": {
"Server": "",
"Database": "test.db",
"UserName": "",
"Password": ""
},
/*
Настройки функциональности бота.
Token - Токен для управления ботом [Обязательно]
WhiteListIsEnable - Нужно ли включать режим белого списка [Обязательно]
OwnersChatIDs - Телеграм ID админов бота (для доступка к админке) [Обязательно]
IsNeedCacheContext - Нужно ли включать кэш для глобального контекста [Обязательно]
При включённом режиме, по-умолчанию, он держится 6 часов, если к определённому контексту не было запросов.
IsNeedLimits - Нужно ли включать режим лимитов. [Необязательно] [По-умолчанию - False]
*/
"Bot": {
"Token": "<Your telegram bot token>",
"WhiteListIsEnable": "False",
"OwnersChatIDs": [ "000000000" ],
"IsNeedCacheContext": "True",
"IsNeedLimits": "True"
},
/*
Настройки уведомлений об операциях.
NotifyOwnersAboutCriticalErrors - Отсылать уведомления админам об критических ошибках в боте [Обязательно]
NotifyOwnersAboutRuntimeErrors - Отсылать уведомления админам об некритических ошибках в боте [Обязательно]
*/
"Notifications": {
"NotifyOwnersAboutCriticalErrors": "True",
"NotifyOwnersAboutRuntimeErrors": "True"
},
/*
Настройки логгирования приложения.
Доступные уровни логгирования: Trace, Debug, Information, Warning, Error, Critical, None, All.
MainRuleLog - Основное правило логгирование. По-умолчанию, для логгирования из всех классов.
DBLogLevels - Логи с этим уровнем будут записаны в БД [Необязательно]
ConsoleLogLevels - Логи с этим уровнем будут выведены в консоли [Необязательно]
CustomRulesLog - Кастомное правило логгирования, строго для какого-то класса [Необязательно]
FullClassName - Полное название класса [Обязательно, если указывается кастомное правило]
*/
"LogInfo": {
"MainRuleLog": {
"DBLogLevels": [ "Error", "Critical" ],
"ConsoleLogLevels": [ "All" ]
},
"CustomRulesLog": [
{
"FullClassName": "",
"DBLogLevels": [ "" ],
"ConsoleLogLevels": [ "" ]
}
]
},
/*
AboutBot - Описание, выводимое из меню настройки по кнопке "О боте" [Необязательно]
*/
"AboutBot": "Some information about bot"
}
- Хранение данных: Используется SQLite + EF
- Логи находятся таблице "Logs"
- Данные тренировок можно импортировать через консольное приложение WorkoutStorageImport. Запись об импортированных данных хранятся в таблице "ImportInfo"

