Обработка до и после update

OnPreUpdate - событие до всех update

Бывают ситуации, когда перед обработкой входящего сообщения или любого другого обновления требуется выполнить дополнительную логику. Например, проверить, зарегистрирован ли пользователь. Если пользователь не зарегистрирован — можно сразу отправить его на регистрацию и при необходимости прервать дальнейшую обработку текущего update. Для таких случаев предусмотрено событие OnPreUpdate: оно вызывается перед основным пайплайном обработки и позволяет выполнить свою логику, а также — при необходимости — остановить дальнейшую обработку.

Пример:

// Создание бота
var telegram = new PRBotBuilder("Token").SetBotId(0).Build();
// Подписка на событие.
telegram.Events.UpdateEvents.OnPreUpdate += Handler_OnUpdate;
// Метод обработки события.
async Task<UpdateResult> Handler_OnUpdate(BotEventArgs e)
{
    /*
     Для примера можно рассмотреть зарегистрирован ли пользователь или нет.
        Если зарегистрирован
            return UpdateResult.Continue; - данный результат позволит продолжить обработку.
        Если не зарегистрирован то вызвать метод регистрации
            RegisterMethod();
            return UpdateResult.Stop или return UpdateResult.Handled - позволит прервать текущую обработку и отправить пользователя на регистрацию
     */
    return UpdateResult.Continue;
}

OnPostUpdate - событие после всех update

Иногда необходимо выполнить некоторую логику после обработки любого действия пользователя. Например, сохранить дату и время последней активности пользователя. Для этого можно использовать событие OnPostUpdate: оно вызывается после завершения всей основной обработки update и позволяет выполнить дополнительные действия, не влияя на основной пайплайн.

Last updated