Телеграм бот, который умеет уведомлять о предстоящих днях рождения
название - birthday_schedule
логин - @birthday_schedule_bot
set_notification_delay_in_days - Указать за сколько дней до дня рождения будет создан чат
import_birthdays - Импорт дней рождения
birthdays - список дней рождения
clear_birthdays - очистка списка дней рождения для уведомлений
Из за отсутствия отдельного домена на https, работа с основана на опросах сервиса Telegram о новых поступивших сообщениях от пользователей
Бот реализован на основе Hangfire с публичными методами для запуска задач
- задача на периодический опрос о новых обновлениях
- задача на отправку уведомлений о днях рождения
Задачами можно управлять напрямую из данного интерфейса т.к. поддержана логика обработки токенов отмены CancellationToken, т.е. при отмене задачи через UI она будет остановлена и в коде (даже если выполняется бесконечный цикл опросов сервиса Telegram)
{
"Token": "",
"BirthdaySheduleTelegramBotToken": "",
"Socks5Hostname": "",
"Socks5Port": "",
"Socks5Username": "",
"Socks5Password": ""
},
- Для запуска задачи на получение и обработку пользовательских сообщений
/api/bot/telegram/birthday-schedule/start-bot-settings-job
тело запроса
{
"token": "токен безопасности"
}
- для создания задачи на отправку уведомлений по расписанию
/api/bot/telegram/birthday-schedule/start-bot-settings-job
тело запроса
{
"token": "токен безопасности",
"HoursUTC": 9
}
HoursUTC - время в часах в UTC, в которое будет выполнена задача
При повторном вызове метода новой задачи (дубликата) не создается
- NET Core SDK v2.2.2 Можно скачать отсюда: https://dotnet.microsoft.com/download
Работа с .NET Core CLI
Из директории проекта выполнить команду dotnet build
dotnet build
Из директории проекта выполнить команду dotnet test
dotnet test
Из директории проекта выполнить команду dotnet run
Запуск с окружением Development:
dotnet run --project "./BirthdayNotificationService.Application.WebApi/BirthdayNotificationService.Application.WebApi.csproj" --launch-profile "Development"
Из директории проекта выполнить команду dotnet publish
Тестовый Stage
dotnet publish "./BirthdayNotificationService.Application.WebApi/BirthdayNotificationService.Application.WebApi.csproj" -c Debug --output "путь до папки" /p:EnvironmentName=Development
EnvironmentName может принимать значения Development, Staging или Production
Для успешного выполнения команд необходимо, чтобы текущей директорией был проект BirthdayNotificationService.Application.WebApi
Строка подключения настраивается в appsettings.json проекта BirthdayNotificationService.Application.WebApi
"ConnectionStrings": {
"BirthdayNotificationSchedule": "Server=PROG21\\SQLEXPRESS;Database=ExampleDatabase;Trusted_Connection=True"
}
Добавление новой миграции
dotnet ef migrations add InitialMigration --project ../BirthdayNotificationService.Persistence
Обновление БД
dotnet ef database update --project ../BirthdayNotificationService.Persistence