- InfinityLoop.cs — хранит бесконечный цикл, который работает все время, когда программа включена. Этов новый день делай бла-бла-бла(кое-что)
Код: Выделить всё
s logic something like this: if it
Код: Выделить всё
public static class InfinityLoop
{
private static readonly TimeSpan CheckInterval = TimeSpan.FromSeconds(10);
private static DateTime _lastCheckDate = DateTime.Now;
public static async Task StartReminderLoop(ITelegramBotClient botClient, Update update)
{
while (true)
{
if (_lastCheckDate.Day != DateTime.Now.Day)
{
await ReminderBack.RemindPersonForBirthday(botClient, update);
_lastCheckDate = DateTime.Now;
}
await Task.Delay(CheckInterval);
}
}
}
< /ол>
Код: Выделить всё
public static class ReminderBack
{
public static async Task RemindPersonForBirthday(ITelegramBotClient botClient,
Update update)
{
var currDate = DateTime.Today;
var cache = update.GetCacheData();
foreach (var user in cache.ScheduleDict)
{
if (user.Value.Month.Equals(currDate.Month) && user.Value.Day.Equals(currDate.Day))
{
var message = $"Today is {user.Key}'s birthday!";
_ = await PRTelegramBot.Helpers.Message.Send(botClient, update, message);
}
else if (user.Value.Month.Equals(currDate.Month) && user.Value.Day.Equals(currDate.Day + 1))
{
var message = $"{user.Key}'s birthday is tomorrow!";
_ = await PRTelegramBot.Helpers.Message.Send(botClient, update, message);
}
}
}
}
Код: Выделить всё
public static async Task PickDate(ITelegramBotClient botClient, Update update)
{
if (update.CallbackQuery?.Data is null)
{
return;
}
try
{
var command = InlineCallback.GetCommandByCallbackOrNull(update.CallbackQuery.Data);
var data = command.Data.Date;
var message = $"Picked date: {data:dd.MM.yyyy}[/b]";
await PRTelegramBot.Helpers.Message.Edit(botClient, update, message);
//caching date
var cache = update.GetCacheData();
cache.DateT = data;
CacheCommand.UpdateCache(update, cache.PersonName ?? "unknown", cache.DateT);
await ReminderBack.RemindPersonForBirthday(botClient, update);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
Я хочу, чтобы один метод выполнял разную логику в разных классах, чтобы не писать другой аналогичный метод, потому что каждый раз, когда я вызываю метод PickDate, он перебирает словарь и проверяет всех людей, а не конкретного, с которым я работаю.
Ничего не использовал, просто нужен совет как чтобы сохранить код в чистоте и не писать похожий метод
Подробнее здесь: https://stackoverflow.com/questions/784 ... rent-logic
Мобильная версия