public void StartBotAsync() { using var cts = new CancellationTokenSource(); // StartReceiving does not block the caller thread. Receiving is done on the ThreadPool. Bot.StartReceiving(new DefaultUpdateHandler(HandleUpdateAsync, HandleErrorAsync), cts.Token); LogsManager.CreateLogSync($"Start listening for @{Bot.GetMeAsync().Result.Username}", LogLevel.Info); }