Skip to content

Conversation

@prethink
Copy link
Owner

@prethink prethink commented Sep 13, 2025

📌 Описание изменений

  • Рефакторинг кода. Так же спасибо за помощь @Harlok13.
  • Добавлен IBotContext который хранит в себе: Всех экземпляры ботов системы, текущий экземпляр бота. Update. BotClient, CurrentUpdateType, CancelationToken.
  • Сигнатура методов, команд, утилит ...ITelegramBotClient botClient, Update update... заменена на IBotContext context
  • Добавлены методы расширений для IBotContext по аналогии с update. Cache, Steps и другие.

CacheExtension.

  • Добавлен метод GetOrCreate. Получает существующий кэш или создает новый. Если тип кэша отличается от существующего, будет создан кэш нового типа.
  • Поправлен метод CreateCacheData. Теперь при его вызове будет всегда создаваться новый кэш.

Общее

  • Поправлены примеры ботов.
  • Добавлен новый метод расширения для получения идентификатора пользователя GetUserId()
  • Документация будет обновлена позже, после слияния с мастером.

✅ Тип изменений

Отметьте x где нужно:

  • 🐞 Исправление бага (non-breaking change)
  • 🚀 Новая функциональность (non-breaking change)
  • 💥 Ломающие изменения (требуется миграция, изменены публичные API)
  • 📝 Обновление документации
  • 🧪 Тесты (добавлены/обновлены unit/integration тесты)
  • ⚡ Оптимизация производительности

🔄 Миграция

MiddlewareBase:

  • InvokeOnPreUpdateAsync(ITelegramBotClient context.BotClient, context.Update update, Func next) -> InvokeOnPreUpdateAsync(IBotContext context, Func next)
  • InvokeOnPostUpdateAsync(ITelegramBotClient context.BotClient, context.Update update, Func next) -> InvokeOnPostUpdateAsync(IBotContext context)

IExecuteStep и его реализации:

ExecuteStep(ITelegramBotClient context.BotClient, context.Update update) -> ExecuteStep(IBotContext context)

PRBotBuilder

  • SetIpAddresWebHook(string ipAddress) -> SetIpAddressWebHook(string ipAddress)
  • AddRecevingOptions(ReceiverOptions recevierOptions) -> AddReceivingOptions(ReceiverOptions receiverOptions)

PRBotWebHook

  • GetWebHookInfo(CancellationToken cancellationToken = default) -> GetWebHookInfoAsync(CancellationToken cancellationToken = default)

PRBotBase

  • Start -> StartAsync
  • Stop -> StopAsync

Методы в вашем коде нужно привести к сигнатуре от (ITelegramBotClient context.BotClient, context.Update update) к (IBotContext context) и поправить другие места в коде куда передавались или брались старые аргументы аргументы.
Примеры:
update -> context.Update
botClient -> context.BotClient

По поводу ITelegramBotClient context.BotClient, context.Update update -> IBotContext context не все места указал, но в основном правки такого рода. Меняем сигнатуру методов, правим внутри методов код. В вспомогательные методы из библиотеки передаем так же (context), а не как было раньше (botClient, update)


@prethink prethink mentioned this pull request Sep 13, 2025
7 tasks
Repository owner deleted a comment from prethink1994 Sep 13, 2025
@prethink prethink merged commit c0d09e8 into master Sep 15, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CacheExtension поправить метод CreateCache CancellationToken в методы бота

3 participants